diff --git a/level-editor/src/lib.rs b/level-editor/src/lib.rs index c5134fa..4865c6a 100644 --- a/level-editor/src/lib.rs +++ b/level-editor/src/lib.rs @@ -1,7 +1,8 @@ +#![cfg(target_arch = "wasm32")] + use ultraviolet::Mat4; use wasm_bindgen::prelude::*; -#[cfg(target_arch = "wasm32")] use renderer::app_setup::WebAppRuntime; use renderer::camera::Camera; use renderer::render_data::{InstanceType, MeshCreateInfo, RenderData}; @@ -19,7 +20,6 @@ struct Vertex { struct EditorScene { uniform_buffers: [wgpu::Buffer; 2], bind_groups: [wgpu::BindGroup; 2], - bind_group_layouts: [wgpu::BindGroupLayout; 2], frame_metadata: FrameMetadata, cam: Camera, } @@ -53,7 +53,6 @@ impl renderer::renderer::scene::Scene for EditorScene { let mut scene = EditorScene { uniform_buffers: [uniform_resource.buffer, camera_resource.buffer], bind_groups: [uniform_resource.bind_group, camera_resource.bind_group], - bind_group_layouts, frame_metadata, cam: camera, }; diff --git a/renderer/src/app_setup.rs b/renderer/src/app_setup.rs index 8cbcf52..b73dda0 100644 --- a/renderer/src/app_setup.rs +++ b/renderer/src/app_setup.rs @@ -1,3 +1,5 @@ +#![cfg(target_arch = "wasm32")] + use std::sync::mpsc::{self, Sender}; use wasm_bindgen::closure::Closure; use wasm_bindgen::prelude::*; @@ -5,16 +7,11 @@ use wasm_bindgen::JsCast; use crate::command_ring::CommandRing; use crate::message::WindowEvent; -#[cfg(target_arch = "wasm32")] use crate::platform::web; -#[cfg(target_arch = "wasm32")] use crate::platform::web::worker::MainWorker; -#[cfg(target_arch = "wasm32")] use wasm_bindgen_futures::spawn_local; -#[cfg(target_arch = "wasm32")] use web_sys::AddEventListenerOptions; -#[cfg(target_arch = "wasm32")] pub struct EventListeners { _resize_listener: Closure, _pointer_listener: Closure, @@ -24,7 +21,6 @@ pub struct EventListeners { } /// Setup default window event listeners that forward events to the worker thread -#[cfg(target_arch = "wasm32")] pub fn setup_event_listeners( worker_chan: &Sender, canvas: &web_sys::HtmlCanvasElement, @@ -147,14 +143,12 @@ pub fn setup_event_listeners( } /// Runtime resources required to keep a WASM application running. -#[cfg(target_arch = "wasm32")] pub struct WebAppRuntime { worker: MainWorker, _event_listeners: EventListeners, ring: Box, } -#[cfg(target_arch = "wasm32")] impl WebAppRuntime { /// Initialize the web worker, canvas ownership, and event listeners. pub fn new( diff --git a/renderer/src/renderer/mod.rs b/renderer/src/renderer/mod.rs index 605095d..b153882 100644 --- a/renderer/src/renderer/mod.rs +++ b/renderer/src/renderer/mod.rs @@ -5,11 +5,13 @@ use wasm_bindgen::{prelude::Closure, JsCast, JsValue}; use wasm_bindgen_futures::spawn_local; use web_sys::DedicatedWorkerGlobalScope; +#[cfg(target_arch = "wasm32")] +use crate::render_data::RenderDataConfig; use crate::{ command_ring::CommandRing, gltf::{install_imported, ModelBounds}, message::{camera_drag, CameraDrag, DrainEventError, MouseMessage, ResizeMessage, WindowEvent}, - render_data::{InstanceHandle, InstanceType, MeshHandle, RenderData, RenderDataConfig}, + render_data::{InstanceHandle, InstanceType, MeshHandle, RenderData}, renderer::scene::Scene, }; @@ -26,6 +28,7 @@ pub use pipeline_library::PipelineLibrary; const DEPTH_FORMAT: wgpu::TextureFormat = wgpu::TextureFormat::Depth32Float; +#[cfg(any(target_arch = "wasm32", test))] #[derive(Clone, Copy, Debug, PartialEq, Eq)] struct DeviceFeaturePlan { hard: wgpu::Features, @@ -33,6 +36,7 @@ struct DeviceFeaturePlan { profiling_enabled: bool, } +#[cfg(any(target_arch = "wasm32", test))] fn device_feature_plan(profile: bool, supported: wgpu::Features) -> DeviceFeaturePlan { let hard = wgpu::Features::INDIRECT_FIRST_INSTANCE; let profiling = profiler::Profiler::requested_features(profile, supported); @@ -1290,7 +1294,6 @@ pub struct RendererContext { } pub struct Renderer { - canvas: web_sys::OffscreenCanvas, events_chan: Receiver, context: RendererContext, resources: PipelineLibrary, @@ -2416,7 +2419,6 @@ impl Renderer { Self::ensure_gltf_pipelines(&mut resources, &context); Self { - canvas, events_chan, context, scene, diff --git a/renderer/src/renderer/profiler.rs b/renderer/src/renderer/profiler.rs index dbe0315..b2d367d 100644 --- a/renderer/src/renderer/profiler.rs +++ b/renderer/src/renderer/profiler.rs @@ -5,8 +5,11 @@ use std::{ use wasm_bindgen::JsValue; pub const MAX_PROFILE_PASSES: usize = crate::render_graph::MAX_EXECUTIONS; +#[cfg(any(target_arch = "wasm32", test))] const SLOT_COUNT: usize = 4; +#[cfg(any(target_arch = "wasm32", test))] const QUERY_COUNT: u32 = (MAX_PROFILE_PASSES * 2) as u32; +#[cfg(any(target_arch = "wasm32", test))] const RESOLVE_SIZE: u64 = QUERY_COUNT as u64 * 8; #[derive(Clone, Copy, Debug, PartialEq, Eq)] @@ -78,6 +81,7 @@ pub(crate) struct Profiler { } impl Profiler { + #[cfg(any(target_arch = "wasm32", test))] pub fn requested_features(requested: bool, supported: wgpu::Features) -> wgpu::Features { if requested && supported.contains(wgpu::Features::TIMESTAMP_QUERY) { wgpu::Features::TIMESTAMP_QUERY @@ -85,6 +89,7 @@ impl Profiler { wgpu::Features::empty() } } + #[cfg(target_arch = "wasm32")] pub async fn new(requested: bool, device: &wgpu::Device, queue: &wgpu::Queue) -> Self { let available = requested && device.features().contains(wgpu::Features::TIMESTAMP_QUERY); let mut slots = Vec::new(); diff --git a/renderer/src/shared_snapshot.rs b/renderer/src/shared_snapshot.rs index 0505c0a..372e07d 100644 --- a/renderer/src/shared_snapshot.rs +++ b/renderer/src/shared_snapshot.rs @@ -24,7 +24,6 @@ const CONTROL_BYTES: u32 = 256; const SLOT_BYTES: u32 = 64; const SNAPSHOT_HEADER_BYTES: usize = 64; const DATA_OFFSET: usize = 448; -const DESCRIPTOR_BYTES: usize = 32; const STREAMS: usize = 12; const SCHEMA_FLAGS: u32 = 3; // dense arrays | affine transforms