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;