diff --git a/engine/BUILD b/engine/BUILD
index 5d0322a..4fd0688 100644
--- a/engine/BUILD
+++ b/engine/BUILD
@@ -1,5 +1,4 @@
-load("@rules_rust//rust:rust.bzl", "rust_binary", "rust_library")
-load("@rules_pkg//:pkg.bzl", "pkg_tar")
+load("@rules_rust//rust:rust.bzl", "rust_library")
rust_library(
name = "engine",
@@ -16,39 +15,18 @@ rust_library(
"lib.rs",
"globals.rs",
- "input.rs",
"scripting.rs",
-
- "render/mod.rs",
- "render/light.rs",
- "render/material.rs",
- "render/mesh.rs",
- "render/renderable.rs",
- "render/resource.rs",
-
- "render/vulkan/mod.rs",
- "render/vulkan/data.rs",
- "render/vulkan/material.rs",
- "render/vulkan/pipeline.rs",
- "render/vulkan/pipeline_forward.rs",
- "render/vulkan/qfi.rs",
- "render/vulkan/shaders.rs",
- "render/vulkan/surface_binding.rs",
- "render/vulkan/swapchain_binding.rs",
- "render/vulkan/worker.rs",
],
deps = [
"//engine/util",
"//engine/physics",
+ "//engine/render",
"//lib/ecs",
"//third_party/cargo:cgmath",
"//third_party/cargo:image",
"//third_party/cargo:mlua",
- "//third_party/cargo:winit",
"//third_party/cargo:log",
"//third_party/cargo:env_logger",
- "//third_party/cargo:vulkano",
- "//third_party/cargo:vulkano_win",
],
proc_macro_deps = [
"//lib/ecs_macros",
diff --git a/engine/input/BUILD.bazel b/engine/input/BUILD.bazel
new file mode 100644
index 0000000..9879900
--- /dev/null
+++ b/engine/input/BUILD.bazel
@@ -0,0 +1,24 @@
+load("@rules_rust//rust:rust.bzl", "rust_library")
+
+rust_library(
+ name = "input",
+ crate_name = "engine_input",
+ edition = "2018",
+ rustc_flags = [
+ "-C", "opt-level=3",
+ "-C", "overflow-checks=n",
+ "-C", "force-frame-pointers=y",
+ "-C", "lto=off",
+ "-Zpolonius",
+ "-Zborrowck=mir",
+ ],
+ srcs = [
+ "lib.rs",
+ ],
+ deps = [
+ "//lib/ecs",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/engine/input.rs b/engine/input/lib.rs
similarity index 100%
rename from engine/input.rs
rename to engine/input/lib.rs
diff --git a/engine/lib.rs b/engine/lib.rs
index 8bce77a..21b8906 100644
--- a/engine/lib.rs
+++ b/engine/lib.rs
@@ -15,6 +15,4 @@
// Abrasion. If not, see .
pub mod globals;
-pub mod input;
-pub mod render;
pub mod scripting;
diff --git a/engine/render/BUILD.bazel b/engine/render/BUILD.bazel
new file mode 100644
index 0000000..4abe7e2
--- /dev/null
+++ b/engine/render/BUILD.bazel
@@ -0,0 +1,50 @@
+load("@rules_rust//rust:rust.bzl", "rust_library")
+
+rust_library(
+ name = "render",
+ crate_name = "engine_render",
+ edition = "2018",
+ rustc_flags = [
+ "-C", "opt-level=3",
+ "-C", "overflow-checks=n",
+ "-C", "force-frame-pointers=y",
+ "-C", "lto=off",
+ "-Zpolonius",
+ "-Zborrowck=mir",
+ ],
+ srcs = [
+ "lib.rs",
+ "light.rs",
+ "material.rs",
+ "mesh.rs",
+ "renderable.rs",
+ "resource.rs",
+
+ "vulkan/data.rs",
+ "vulkan/material.rs",
+ "vulkan/mod.rs",
+ "vulkan/pipeline.rs",
+ "vulkan/pipeline_forward.rs",
+ "vulkan/qfi.rs",
+ "vulkan/shaders.rs",
+ "vulkan/surface_binding.rs",
+ "vulkan/swapchain_binding.rs",
+ "vulkan/worker.rs",
+ ],
+ deps = [
+ "//engine/input",
+ "//engine/util",
+ "//engine/physics",
+ "//lib/ecs",
+ "//third_party/cargo:cgmath",
+ "//third_party/cargo:image",
+ "//third_party/cargo:log",
+ "//third_party/cargo:mlua",
+ "//third_party/cargo:vulkano",
+ "//third_party/cargo:vulkano_win",
+ "//third_party/cargo:winit",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/engine/render/mod.rs b/engine/render/lib.rs
similarity index 99%
rename from engine/render/mod.rs
rename to engine/render/lib.rs
index b61e72d..a4b3d2c 100644
--- a/engine/render/mod.rs
+++ b/engine/render/lib.rs
@@ -49,7 +49,7 @@ pub use mesh::Mesh;
pub use renderable::{Transform, Renderable};
pub use resource::{Resource, ResourceID};
-use crate::input;
+use engine_input as input;
const WIDTH: u32 = 800;
const HEIGHT: u32 = 600;
diff --git a/engine/render/light.rs b/engine/render/light.rs
index f1ec21e..6072719 100644
--- a/engine/render/light.rs
+++ b/engine/render/light.rs
@@ -20,7 +20,7 @@ use cgmath as cgm;
use engine_physics::color;
-use crate::render::vulkan::data;
+use crate::vulkan::data;
/// An Omni point light, with position in 3d space, and 'color' defined in lumens per CIE XYZ
/// color channel.
diff --git a/engine/render/material.rs b/engine/render/material.rs
index b4f2deb..0510f15 100644
--- a/engine/render/material.rs
+++ b/engine/render/material.rs
@@ -26,8 +26,8 @@ use vulkano::image as vm;
use engine_util::file;
use engine_physics::color;
-use crate::render::vulkan::data;
-use crate::render::vulkan::material::ChannelLayoutVulkan;
+use crate::vulkan::data;
+use crate::vulkan::material::ChannelLayoutVulkan;
#[derive(Debug)]
pub enum Texture {
diff --git a/engine/render/mesh.rs b/engine/render/mesh.rs
index e9a5cca..0f11de0 100644
--- a/engine/render/mesh.rs
+++ b/engine/render/mesh.rs
@@ -22,7 +22,7 @@ use vulkano::device as vd;
use vulkano::buffer as vb;
use vulkano::sync::GpuFuture;
-use crate::render::vulkan::data;
+use crate::vulkan::data;
#[derive(Debug)]
pub struct Mesh {
diff --git a/engine/render/renderable.rs b/engine/render/renderable.rs
index f461875..5025eeb 100644
--- a/engine/render/renderable.rs
+++ b/engine/render/renderable.rs
@@ -21,8 +21,8 @@ use std::cell::Ref;
use cgmath as cgm;
use ecs::{Component, ComponentLuaBindings};
-use crate::render::{Light, Mesh, Material};
-use crate::render::resource::{ResourceID};
+use crate::{Light, Mesh, Material};
+use crate::resource::{ResourceID};
use mlua::ToLua;
diff --git a/engine/render/resource.rs b/engine/render/resource.rs
index 9172d5a..c95eeb8 100644
--- a/engine/render/resource.rs
+++ b/engine/render/resource.rs
@@ -1,7 +1,7 @@
use std::collections::BTreeMap;
use std::cmp::Ordering;
-use crate::render::{Mesh, Material, Light};
+use crate::{Mesh, Material, Light};
type Map = BTreeMap, T>;
diff --git a/engine/render/vulkan/mod.rs b/engine/render/vulkan/mod.rs
index 1b9e6c7..114df8f 100644
--- a/engine/render/vulkan/mod.rs
+++ b/engine/render/vulkan/mod.rs
@@ -40,8 +40,8 @@ mod shaders;
mod swapchain_binding;
mod worker;
-use crate::render::{Light, Material, Mesh, ResourceID};
-use crate::render::resource;
+use crate::{Light, Material, Mesh, ResourceID};
+use crate::resource;
const VERSION: vi::Version = vi::Version { major: 1, minor: 0, patch: 0};
diff --git a/engine/render/vulkan/pipeline.rs b/engine/render/vulkan/pipeline.rs
index 4b5f256..23b211d 100644
--- a/engine/render/vulkan/pipeline.rs
+++ b/engine/render/vulkan/pipeline.rs
@@ -21,7 +21,7 @@ use vulkano::pipeline as vp;
use vulkano::descriptor::descriptor_set as vdd;
use vulkano::memory as vm;
-use crate::render::vulkan::data;
+use crate::vulkan::data;
pub type VulkanoPipeline = dyn vp::GraphicsPipelineAbstract + Send + Sync;
pub type VulkanoDescriptorSet = dyn vdd::DescriptorSet + Send + Sync;
diff --git a/engine/render/vulkan/pipeline_forward.rs b/engine/render/vulkan/pipeline_forward.rs
index 09e3329..4c98abb 100644
--- a/engine/render/vulkan/pipeline_forward.rs
+++ b/engine/render/vulkan/pipeline_forward.rs
@@ -30,9 +30,9 @@ use vulkano::pipeline::shader as vps;
use vulkano::pipeline::vertex as vpv;
use vulkano::sampler as vs;
-use crate::render::vulkan::data;
-use crate::render::vulkan::shaders;
-use crate::render::vulkan::pipeline;
+use crate::vulkan::data;
+use crate::vulkan::shaders;
+use crate::vulkan::pipeline;
pub struct Forward {
pipeline: Arc,
diff --git a/engine/scripting.rs b/engine/scripting.rs
index 61cde7d..0543c78 100644
--- a/engine/scripting.rs
+++ b/engine/scripting.rs
@@ -2,7 +2,7 @@ use std::collections::BTreeMap;
use std::sync::{Arc, Mutex, RwLock, atomic};
use std::io::Read;
-use crate::render;
+use engine_render as render;
use engine_util as util;
use crate::globals::Time;
diff --git a/hsvr/BUILD.bazel b/hsvr/BUILD.bazel
index e1e56c5..135faeb 100644
--- a/hsvr/BUILD.bazel
+++ b/hsvr/BUILD.bazel
@@ -20,8 +20,10 @@ rust_binary(
],
deps = [
"//engine",
+ "//engine/input",
"//engine/util",
"//engine/physics",
+ "//engine/render",
"//lib/ecs",
"//third_party/cargo:cgmath",
"//third_party/cargo:env_logger",
diff --git a/hsvr/main.rs b/hsvr/main.rs
index 487c626..71426c4 100644
--- a/hsvr/main.rs
+++ b/hsvr/main.rs
@@ -2,9 +2,11 @@ use std::sync::Arc;
use cgmath as cgm;
use ecs_macros::Access;
-use engine::{globals, input, render, scripting};
-use engine::render::material;
-use engine::render::vulkan::data;
+use engine_input as input;
+use engine_render as render;
+use engine_render::material;
+use engine_render::vulkan::data;
+use engine::{globals, scripting};
use engine_physics as physics;
use engine_util as util;