diff --git a/voxygen/src/render/instances.rs b/voxygen/src/render/instances.rs index f6615b4970..f07bb58dfd 100644 --- a/voxygen/src/render/instances.rs +++ b/voxygen/src/render/instances.rs @@ -9,8 +9,8 @@ pub struct Instances { impl Instances { pub fn new(device: &wgpu::Device, len: usize) -> Self { Self { - // TODO: examine if we have Intances that are not updated and if there would be any - // gains from separating those out + // TODO: examine if we have Intances that are not updated (e.g. sprites) and if there + // would be any gains from separating those out buf: DynamicBuffer::new(device, len, wgpu::BufferUsage::VERTEX), } } diff --git a/voxygen/src/render/renderer.rs b/voxygen/src/render/renderer.rs index 7df2398dee..2744203426 100644 --- a/voxygen/src/render/renderer.rs +++ b/voxygen/src/render/renderer.rs @@ -197,8 +197,8 @@ impl Renderer { features: wgpu::Features::DEPTH_CLAMPING | wgpu::Features::ADDRESS_MODE_CLAMP_TO_BORDER | wgpu::Features::PUSH_CONSTANTS - // TODO: make optional based on enabling profiling - // NOTE: requires recreating the device/queue is this setting changes + // TODO: make optional based on enabling profiling setting? + // woould require recreating the device/queue if this setting changes // alternatively it could be a compile time feature toggle | (adapter.features() & wgpu_profiler::GpuProfiler::REQUIRED_WGPU_FEATURES), limits, @@ -681,23 +681,6 @@ impl Renderer { .unwrap_or_else(|| (Vec2::new(1, 1), Vec2::new(1, 1))) } - // /// Queue the clearing of the shadow targets ready for a new frame to be - // /// rendered. - // pub fn clear_shadows(&mut self) { - // span!(_guard, "clear_shadows", "Renderer::clear_shadows"); - // if !self.mode.shadow.is_map() { - // return; - // } - // if let Some(shadow_map) = self.shadow_map.as_mut() { - // // let point_encoder = &mut shadow_map.point_encoder; - // let point_encoder = &mut self.encoder; - // point_encoder.clear_depth(&shadow_map.point_depth_view, 1.0); - // // let directed_encoder = &mut shadow_map.directed_encoder; - // let directed_encoder = &mut self.encoder; - // directed_encoder.clear_depth(&shadow_map.directed_depth_view, - // 1.0); } - // } - // TODO: @Sharp what should this look like with wgpu? /// NOTE: Supported by Vulkan (by default), DirectX 10+ (it seems--it's hard /// to find proof of this, but Direct3D 10 apparently does it by @@ -1104,7 +1087,7 @@ impl Renderer { texture: &Texture, /* */ offset: [u32; 2], size: [u32; 2], - // TODO: generic over pixel type + // TODO: be generic over pixel type data: &[[u8; 4]], ) { texture.update(&self.queue, offset, size, bytemuck::cast_slice(data)) @@ -1138,95 +1121,6 @@ impl Renderer { } } - // /// Queue the rendering of the provided skybox model in the upcoming frame. - // pub fn render_skybox( - // &mut self, - // model: &Model, - // global: &GlobalModel, - // locals: &Consts, - // lod: &lod_terrain::LodData, - // ) { - // self.encoder.draw( - // &gfx::Slice { - // start: model.vertex_range().start, - // end: model.vertex_range().end, - // base_vertex: 0, - // instances: None, - // buffer: gfx::IndexBuffer::Auto, - // }, - // &self.skybox_pipeline.pso, - // &skybox::pipe::Data { - // vbuf: model.vbuf.clone(), - // locals: locals.buf.clone(), - // globals: global.globals.buf.clone(), - // noise: (self.noise_tex.srv.clone(), - // self.noise_tex.sampler.clone()), alt: (lod.alt.srv.clone(), - // lod.alt.sampler.clone()), horizon: (lod.horizon.srv.clone(), - // lod.horizon.sampler.clone()), tgt_color: - // self.tgt_color_view.clone(), tgt_depth: - // (self.tgt_depth_view.clone()/* , (1, 1) */), }, - // ); - // } - - // /// Queue the rendering of the provided figure model in the upcoming frame. - // pub fn render_figure( - // &mut self, - // model: &figure::FigureModel, - // col_lights: &Texture, - // global: &GlobalModel, - // locals: &Consts, - // bones: &Consts, - // lod: &lod_terrain::LodData, - // ) { - // let (point_shadow_maps, directed_shadow_maps) = - // if let Some(shadow_map) = &mut self.shadow_map { - // ( - // ( - // shadow_map.point_res.clone(), - // shadow_map.point_sampler.clone(), - // ), - // ( - // shadow_map.directed_res.clone(), - // shadow_map.directed_sampler.clone(), - // ), - // ) - // } else { - // ( - // (self.noise_tex.srv.clone(), self.noise_tex.sampler.clone()), - // (self.noise_tex.srv.clone(), self.noise_tex.sampler.clone()), - // ) - // }; - // let model = &model.opaque; - - // self.encoder.draw( - // &gfx::Slice { - // start: model.vertex_range().start, - // end: model.vertex_range().end, - // base_vertex: 0, - // instances: None, - // buffer: gfx::IndexBuffer::Auto, - // }, - // &self.figure_pipeline.pso, - // &figure::pipe::Data { - // vbuf: model.vbuf.clone(), - // col_lights: (col_lights.srv.clone(), col_lights.sampler.clone()), - // locals: locals.buf.clone(), - // globals: global.globals.buf.clone(), - // bones: bones.buf.clone(), - // lights: global.lights.buf.clone(), - // shadows: global.shadows.buf.clone(), - // light_shadows: global.shadow_mats.buf.clone(), - // point_shadow_maps, - // directed_shadow_maps, - // noise: (self.noise_tex.srv.clone(), - // self.noise_tex.sampler.clone()), alt: (lod.alt.srv.clone(), - // lod.alt.sampler.clone()), horizon: (lod.horizon.srv.clone(), - // lod.horizon.sampler.clone()), tgt_color: - // self.tgt_color_view.clone(), tgt_depth: - // (self.tgt_depth_view.clone()/* , (1, 1) */), }, - // ); - // } - // /// Queue the rendering of the player silhouette in the upcoming frame. // pub fn render_player_shadow( // &mut self, @@ -1286,566 +1180,6 @@ impl Renderer { // (self.tgt_depth_view.clone()/* , (0, 0) */), }, // ); */ // } - - // /// Queue the rendering of the player model in the upcoming frame. - // pub fn render_player( - // &mut self, - // model: &figure::FigureModel, - // col_lights: &Texture, - // global: &GlobalModel, - // locals: &Consts, - // bones: &Consts, - // lod: &lod_terrain::LodData, - // ) { - // let (point_shadow_maps, directed_shadow_maps) = - // if let Some(shadow_map) = &mut self.shadow_map { - // ( - // ( - // shadow_map.point_res.clone(), - // shadow_map.point_sampler.clone(), - // ), - // ( - // shadow_map.directed_res.clone(), - // shadow_map.directed_sampler.clone(), - // ), - // ) - // } else { - // ( - // (self.noise_tex.srv.clone(), self.noise_tex.sampler.clone()), - // (self.noise_tex.srv.clone(), self.noise_tex.sampler.clone()), - // ) - // }; - // let model = &model.opaque; - - // self.encoder.draw( - // &gfx::Slice { - // start: model.vertex_range().start, - // end: model.vertex_range().end, - // base_vertex: 0, - // instances: None, - // buffer: gfx::IndexBuffer::Auto, - // }, - // &self.figure_pipeline.pso, - // &figure::pipe::Data { - // vbuf: model.vbuf.clone(), - // col_lights: (col_lights.srv.clone(), col_lights.sampler.clone()), - // locals: locals.buf.clone(), - // globals: global.globals.buf.clone(), - // bones: bones.buf.clone(), - // lights: global.lights.buf.clone(), - // shadows: global.shadows.buf.clone(), - // light_shadows: global.shadow_mats.buf.clone(), - // point_shadow_maps, - // directed_shadow_maps, - // noise: (self.noise_tex.srv.clone(), - // self.noise_tex.sampler.clone()), alt: (lod.alt.srv.clone(), - // lod.alt.sampler.clone()), horizon: (lod.horizon.srv.clone(), - // lod.horizon.sampler.clone()), tgt_color: - // self.tgt_color_view.clone(), tgt_depth: - // (self.tgt_depth_view.clone()/* , (1, 1) */), }, - // ); - // } - - // /// Queue the rendering of the provided terrain chunk model in the upcoming - // /// frame. - // pub fn render_terrain_chunk( - // &mut self, - // model: &Model, - // col_lights: &Texture, - // global: &GlobalModel, - // locals: &Consts, - // lod: &lod_terrain::LodData, - // ) { - // let (point_shadow_maps, directed_shadow_maps) = - // if let Some(shadow_map) = &mut self.shadow_map { - // ( - // ( - // shadow_map.point_res.clone(), - // shadow_map.point_sampler.clone(), - // ), - // ( - // shadow_map.directed_res.clone(), - // shadow_map.directed_sampler.clone(), - // ), - // ) - // } else { - // ( - // (self.noise_tex.srv.clone(), self.noise_tex.sampler.clone()), - // (self.noise_tex.srv.clone(), self.noise_tex.sampler.clone()), - // ) - // }; - - // self.encoder.draw( - // &gfx::Slice { - // start: model.vertex_range().start, - // end: model.vertex_range().end, - // base_vertex: 0, - // instances: None, - // buffer: gfx::IndexBuffer::Auto, - // }, - // &self.terrain_pipeline.pso, - // &terrain::pipe::Data { - // vbuf: model.vbuf.clone(), - // // TODO: Consider splitting out texture atlas data into a - // separate vertex buffer, // since we don't need it for things - // like global.shadows. col_lights: (col_lights.srv.clone(), - // col_lights.sampler.clone()), locals: locals.buf.clone(), - // globals: global.globals.buf.clone(), - // lights: global.lights.buf.clone(), - // shadows: global.shadows.buf.clone(), - // light_shadows: global.shadow_mats.buf.clone(), - // point_shadow_maps, - // directed_shadow_maps, - // noise: (self.noise_tex.srv.clone(), - // self.noise_tex.sampler.clone()), alt: (lod.alt.srv.clone(), - // lod.alt.sampler.clone()), horizon: (lod.horizon.srv.clone(), - // lod.horizon.sampler.clone()), tgt_color: - // self.tgt_color_view.clone(), tgt_depth: - // (self.tgt_depth_view.clone()/* , (1, 1) */), }, - // ); - // } - - // /// Queue the rendering of a shadow map from a point light in the upcoming - // /// frame. - // pub fn render_shadow_point( - // &mut self, - // model: &Model, - // global: &GlobalModel, - // terrain_locals: &Consts, - // locals: &Consts, - // ) { - // if !self.mode.shadow.is_map() { - // return; - // } - // // NOTE: Don't render shadows if the shader is not supported. - // let shadow_map = if let Some(shadow_map) = &mut self.shadow_map { - // shadow_map - // } else { - // return; - // }; - - // // let point_encoder = &mut shadow_map.point_encoder; - // let point_encoder = &mut self.encoder; - // point_encoder.draw( - // &gfx::Slice { - // start: model.vertex_range().start, - // end: model.vertex_range().end, - // base_vertex: 0, - // instances: None, - // buffer: gfx::IndexBuffer::Auto, - // }, - // &shadow_map.point_pipeline.pso, - // &shadow::pipe::Data { - // // Terrain vertex stuff - // vbuf: model.vbuf.clone(), - // locals: terrain_locals.buf.clone(), - // globals: global.globals.buf.clone(), - - // // Shadow stuff - // light_shadows: locals.buf.clone(), - // tgt_depth: shadow_map.point_depth_view.clone(), - // }, - // ); - // } - - // /// Queue the rendering of terrain shadow map from all directional lights in - // /// the upcoming frame. - // pub fn render_terrain_shadow_directed( - // &mut self, - // model: &Model, - // global: &GlobalModel, - // terrain_locals: &Consts, - // locals: &Consts, - // ) { - // if !self.mode.shadow.is_map() { - // return; - // } - // // NOTE: Don't render shadows if the shader is not supported. - // let shadow_map = if let Some(shadow_map) = &mut self.shadow_map { - // shadow_map - // } else { - // return; - // }; - - // // let directed_encoder = &mut shadow_map.directed_encoder; - // let directed_encoder = &mut self.encoder; - // directed_encoder.draw( - // &gfx::Slice { - // start: model.vertex_range().start, - // end: model.vertex_range().end, - // base_vertex: 0, - // instances: None, - // buffer: gfx::IndexBuffer::Auto, - // }, - // &shadow_map.terrain_directed_pipeline.pso, - // &shadow::pipe::Data { - // // Terrain vertex stuff - // vbuf: model.vbuf.clone(), - // locals: terrain_locals.buf.clone(), - // globals: global.globals.buf.clone(), - - // // Shadow stuff - // light_shadows: locals.buf.clone(), - // tgt_depth: - // shadow_map.directed_depth_view.clone(), }, - // ); - // } - - // /// Queue the rendering of figure shadow map from all directional lights in - // /// the upcoming frame. - // pub fn render_figure_shadow_directed( - // &mut self, - // model: &figure::FigureModel, - // global: &GlobalModel, - // figure_locals: &Consts, - // bones: &Consts, - // locals: &Consts, - // ) { - // if !self.mode.shadow.is_map() { - // return; - // } - // // NOTE: Don't render shadows if the shader is not supported. - // let shadow_map = if let Some(shadow_map) = &mut self.shadow_map { - // shadow_map - // } else { - // return; - // }; - // let model = &model.opaque; - - // // let directed_encoder = &mut shadow_map.directed_encoder; - // let directed_encoder = &mut self.encoder; - // directed_encoder.draw( - // &gfx::Slice { - // start: model.vertex_range().start, - // end: model.vertex_range().end, - // base_vertex: 0, - // instances: None, - // buffer: gfx::IndexBuffer::Auto, - // }, - // &shadow_map.figure_directed_pipeline.pso, - // &shadow::figure_pipe::Data { - // // Terrain vertex stuff - // vbuf: model.vbuf.clone(), - // locals: figure_locals.buf.clone(), - // bones: bones.buf.clone(), - // globals: global.globals.buf.clone(), - - // // Shadow stuff - // light_shadows: locals.buf.clone(), - // tgt_depth: - // shadow_map.directed_depth_view.clone(), }, - // ); - // } - - // /// Queue the rendering of the provided terrain chunk model in the upcoming - // /// frame. - // pub fn render_fluid_chunk( - // &mut self, - // model: &Model, - // global: &GlobalModel, - // locals: &Consts, - // lod: &lod_terrain::LodData, - // waves: &Texture, - // ) { - // let (point_shadow_maps, directed_shadow_maps) = - // if let Some(shadow_map) = &mut self.shadow_map { - // ( - // ( - // shadow_map.point_res.clone(), - // shadow_map.point_sampler.clone(), - // ), - // ( - // shadow_map.directed_res.clone(), - // shadow_map.directed_sampler.clone(), - // ), - // ) - // } else { - // ( - // (self.noise_tex.srv.clone(), self.noise_tex.sampler.clone()), - // (self.noise_tex.srv.clone(), self.noise_tex.sampler.clone()), - // ) - // }; - - // self.encoder.draw( - // &gfx::Slice { - // start: model.vertex_range().start, - // end: model.vertex_range().end, - // base_vertex: 0, - // instances: None, - // buffer: gfx::IndexBuffer::Auto, - // }, - // &self.fluid_pipeline.pso, - // &fluid::pipe::Data { - // vbuf: model.vbuf.clone(), - // locals: locals.buf.clone(), - // globals: global.globals.buf.clone(), - // lights: global.lights.buf.clone(), - // shadows: global.shadows.buf.clone(), - // light_shadows: global.shadow_mats.buf.clone(), - // point_shadow_maps, - // directed_shadow_maps, - // alt: (lod.alt.srv.clone(), lod.alt.sampler.clone()), - // horizon: (lod.horizon.srv.clone(), lod.horizon.sampler.clone()), - // noise: (self.noise_tex.srv.clone(), - // self.noise_tex.sampler.clone()), waves: (waves.srv.clone(), - // waves.sampler.clone()), tgt_color: - // self.tgt_color_view.clone(), tgt_depth: - // (self.tgt_depth_view.clone()/* , (1, 1) */), }, - // ); - // } - - // /// Queue the rendering of the provided terrain chunk model in the upcoming - // /// frame. - // pub fn render_sprites( - // &mut self, - // model: &Model, - // col_lights: &Texture, - // global: &GlobalModel, - // terrain_locals: &Consts, - // locals: &Consts, - // instances: &Instances, - // lod: &lod_terrain::LodData, - // ) { - // let (point_shadow_maps, directed_shadow_maps) = - // if let Some(shadow_map) = &mut self.shadow_map { - // ( - // ( - // shadow_map.point_res.clone(), - // shadow_map.point_sampler.clone(), - // ), - // ( - // shadow_map.directed_res.clone(), - // shadow_map.directed_sampler.clone(), - // ), - // ) - // } else { - // ( - // (self.noise_tex.srv.clone(), self.noise_tex.sampler.clone()), - // (self.noise_tex.srv.clone(), self.noise_tex.sampler.clone()), - // ) - // }; - - // self.encoder.draw( - // &gfx::Slice { - // start: model.vertex_range().start, - // end: model.vertex_range().end, - // base_vertex: 0, - // instances: Some((instances.count() as u32, 0)), - // buffer: gfx::IndexBuffer::Auto, - // }, - // &self.sprite_pipeline.pso, - // &sprite::pipe::Data { - // vbuf: model.vbuf.clone(), - // ibuf: instances.ibuf.clone(), - // col_lights: (col_lights.srv.clone(), col_lights.sampler.clone()), - // terrain_locals: terrain_locals.buf.clone(), - // // NOTE: It would be nice if this wasn't needed and we could use - // a constant buffer // offset into the sprite data. Hopefully, - // when we switch to wgpu we can do this, // as it offers the - // exact API we want (the equivalent can be done in OpenGL using - // // glBindBufferOffset). locals: locals.buf.clone(), - // globals: global.globals.buf.clone(), - // lights: global.lights.buf.clone(), - // shadows: global.shadows.buf.clone(), - // light_shadows: global.shadow_mats.buf.clone(), - // point_shadow_maps, - // directed_shadow_maps, - // noise: (self.noise_tex.srv.clone(), - // self.noise_tex.sampler.clone()), alt: (lod.alt.srv.clone(), - // lod.alt.sampler.clone()), horizon: (lod.horizon.srv.clone(), - // lod.horizon.sampler.clone()), tgt_color: - // self.tgt_color_view.clone(), tgt_depth: - // (self.tgt_depth_view.clone()/* , (1, 1) */), }, - // ); - // } - - // /// Queue the rendering of the provided LoD terrain model in the upcoming - // /// frame. - // pub fn render_lod_terrain( - // &mut self, - // model: &Model, - // global: &GlobalModel, - // locals: &Consts, - // lod: &lod_terrain::LodData, - // ) { - // self.encoder.draw( - // &gfx::Slice { - // start: model.vertex_range().start, - // end: model.vertex_range().end, - // base_vertex: 0, - // instances: None, - // buffer: gfx::IndexBuffer::Auto, - // }, - // &self.lod_terrain_pipeline.pso, - // &lod_terrain::pipe::Data { - // vbuf: model.vbuf.clone(), - // locals: locals.buf.clone(), - // globals: global.globals.buf.clone(), - // noise: (self.noise_tex.srv.clone(), - // self.noise_tex.sampler.clone()), map: (lod.map.srv.clone(), - // lod.map.sampler.clone()), alt: (lod.alt.srv.clone(), - // lod.alt.sampler.clone()), horizon: (lod.horizon.srv.clone(), - // lod.horizon.sampler.clone()), tgt_color: - // self.tgt_color_view.clone(), tgt_depth: - // (self.tgt_depth_view.clone()/* , (1, 1) */), }, - // ); - // } - - // /// Queue the rendering of the provided particle in the upcoming frame. - // pub fn render_particles( - // &mut self, - // model: &Model, - // global: &GlobalModel, - // instances: &Instances, - // lod: &lod_terrain::LodData, - // ) { - // let (point_shadow_maps, directed_shadow_maps) = - // if let Some(shadow_map) = &mut self.shadow_map { - // ( - // ( - // shadow_map.point_res.clone(), - // shadow_map.point_sampler.clone(), - // ), - // ( - // shadow_map.directed_res.clone(), - // shadow_map.directed_sampler.clone(), - // ), - // ) - // } else { - // ( - // (self.noise_tex.srv.clone(), self.noise_tex.sampler.clone()), - // (self.noise_tex.srv.clone(), self.noise_tex.sampler.clone()), - // ) - // }; - - // self.encoder.draw( - // &gfx::Slice { - // start: model.vertex_range().start, - // end: model.vertex_range().end, - // base_vertex: 0, - // instances: Some((instances.count() as u32, 0)), - // buffer: gfx::IndexBuffer::Auto, - // }, - // &self.particle_pipeline.pso, - // &particle::pipe::Data { - // vbuf: model.vbuf.clone(), - // ibuf: instances.ibuf.clone(), - // globals: global.globals.buf.clone(), - // lights: global.lights.buf.clone(), - // shadows: global.shadows.buf.clone(), - // light_shadows: global.shadow_mats.buf.clone(), - // point_shadow_maps, - // directed_shadow_maps, - // noise: (self.noise_tex.srv.clone(), - // self.noise_tex.sampler.clone()), alt: (lod.alt.srv.clone(), - // lod.alt.sampler.clone()), horizon: (lod.horizon.srv.clone(), - // lod.horizon.sampler.clone()), tgt_color: - // self.tgt_color_view.clone(), tgt_depth: - // (self.tgt_depth_view.clone()/* , (1, 1) */), }, - // ); - // } - - // /// Queue the rendering of the provided UI element in the upcoming frame. - // pub fn render_ui_element>( - // &mut self, - // model: Model, - // tex: &Texture, - // scissor: Aabr, - // globals: &Consts, - // locals: &Consts, - // ) where - // F::Surface: gfx::format::TextureSurface, - // F::Channel: gfx::format::TextureChannel, - // ::DataType: Copy, - // { - // let Aabr { min, max } = scissor; - // self.encoder.draw( - // &gfx::Slice { - // start: model.vertex_range.start, - // end: model.vertex_range.end, - // base_vertex: 0, - // instances: None, - // buffer: gfx::IndexBuffer::Auto, - // }, - // &self.ui_pipeline.pso, - // &ui::pipe::Data { - // vbuf: model.vbuf, - // scissor: gfx::Rect { - // x: min.x, - // y: min.y, - // w: max.x - min.x, - // h: max.y - min.y, - // }, - // tex: (tex.srv.clone(), tex.sampler.clone()), - // locals: locals.buf.clone(), - // globals: globals.buf.clone(), - // tgt_color: self.win_color_view.clone(), - // tgt_depth: self.win_depth_view.clone(), - // }, - // ); - // } - - // pub fn render_clouds( - // &mut self, - // model: &Model, - // globals: &Consts, - // locals: &Consts, - // lod: &lod_terrain::LodData, - // ) { - // self.encoder.draw( - // &gfx::Slice { - // start: model.vertex_range().start, - // end: model.vertex_range().end, - // base_vertex: 0, - // instances: None, - // buffer: gfx::IndexBuffer::Auto, - // }, - // &self.clouds_pipeline.pso, - // &clouds::pipe::Data { - // vbuf: model.vbuf.clone(), - // locals: locals.buf.clone(), - // globals: globals.buf.clone(), - // map: (lod.map.srv.clone(), lod.map.sampler.clone()), - // alt: (lod.alt.srv.clone(), lod.alt.sampler.clone()), - // horizon: (lod.horizon.srv.clone(), lod.horizon.sampler.clone()), - // color_sampler: (self.tgt_color_res.clone(), - // self.sampler.clone()), depth_sampler: - // (self.tgt_depth_res.clone(), self.sampler.clone()), noise: - // (self.noise_tex.srv.clone(), self.noise_tex.sampler.clone()), - // tgt_color: self.tgt_color_pp_view.clone(), }, - // ) - // } - - // pub fn render_post_process( - // &mut self, - // model: &Model, - // globals: &Consts, - // locals: &Consts, - // lod: &lod_terrain::LodData, - // ) { - // self.encoder.draw( - // &gfx::Slice { - // start: model.vertex_range().start, - // end: model.vertex_range().end, - // base_vertex: 0, - // instances: None, - // buffer: gfx::IndexBuffer::Auto, - // }, - // &self.postprocess_pipeline.pso, - // &postprocess::pipe::Data { - // vbuf: model.vbuf.clone(), - // locals: locals.buf.clone(), - // globals: globals.buf.clone(), - // map: (lod.map.srv.clone(), lod.map.sampler.clone()), - // alt: (lod.alt.srv.clone(), lod.alt.sampler.clone()), - // horizon: (lod.horizon.srv.clone(), lod.horizon.sampler.clone()), - // color_sampler: (self.tgt_color_res_pp.clone(), - // self.sampler.clone()), depth_sampler: - // (self.tgt_depth_res.clone(), self.sampler.clone()), noise: - // (self.noise_tex.srv.clone(), self.noise_tex.sampler.clone()), - // tgt_color: self.win_color_view.clone(), }, - // ) - // } } fn create_quad_index_buffer_u16(device: &wgpu::Device, vert_length: usize) -> Buffer { diff --git a/voxygen/src/render/renderer/drawer.rs b/voxygen/src/render/renderer/drawer.rs index 0b336b406b..5e5495f8d1 100644 --- a/voxygen/src/render/renderer/drawer.rs +++ b/voxygen/src/render/renderer/drawer.rs @@ -16,7 +16,6 @@ use vek::Aabr; use wgpu_profiler::scope::{ManualOwningScope, OwningScope, Scope}; // Currently available pipelines -// #[derive(Clone, Copy)] enum Pipelines<'frame> { Interface(&'frame super::InterfacePipelines), All(&'frame super::Pipelines), @@ -395,8 +394,6 @@ impl<'frame> Drawer<'frame> { impl<'frame> Drop for Drawer<'frame> { fn drop(&mut self) { - // TODO: submitting things to the queue can let the gpu start on them sooner - // maybe we should submit each render pass to the queue as they are produced? let mut encoder = self.encoder.take().unwrap(); // If taking a screenshota and the blit pipeline is available @@ -436,6 +433,7 @@ impl<'frame> Drop for Drawer<'frame> { let (mut encoder, profiler) = encoder.end_scope(); profiler.resolve_queries(&mut encoder); + // It is recommended to only do one submit per frame self.borrow.queue.submit(std::iter::once(encoder.finish())); profiler @@ -783,7 +781,6 @@ impl<'pass_ref, 'pass: 'pass_ref> UiDrawer<'pass_ref, 'pass> { pub fn prepare<'data: 'pass>( &mut self, locals: &'data ui::BoundLocals, - //texture: &'data ui::TextureBindGroup, buf: &'data DynamicModel, scissor: Aabr, ) -> PreparedUiDrawer<'_, 'pass> { @@ -794,7 +791,6 @@ impl<'pass_ref, 'pass: 'pass_ref> UiDrawer<'pass_ref, 'pass> { }; // Prepare prepared.set_locals(locals); - //prepared.set_texture(texture); prepared.set_model(buf); prepared.set_scissor(scissor); @@ -807,11 +803,6 @@ impl<'pass_ref, 'pass: 'pass_ref> PreparedUiDrawer<'pass_ref, 'pass> { self.render_pass.set_bind_group(1, &locals.bind_group, &[]); } - //pub fn set_texture<'data: 'pass>(&mut self, texture: &'data - // ui::TextureBindGroup) { self.render_pass.set_bind_group(1, - // &texture.bind_group, &[]); - //} - pub fn set_model<'data: 'pass>(&mut self, model: &'data DynamicModel) { self.render_pass.set_vertex_buffer(0, model.buf().slice(..)) } diff --git a/voxygen/src/render/renderer/shadow_map.rs b/voxygen/src/render/renderer/shadow_map.rs index 068bdd5654..cacede40dd 100644 --- a/voxygen/src/render/renderer/shadow_map.rs +++ b/voxygen/src/render/renderer/shadow_map.rs @@ -7,8 +7,6 @@ use vek::*; /// A type that holds shadow map data. Since shadow mapping may not be /// supported on all platforms, we try to keep it separate. pub struct ShadowMapRenderer { - // directed_encoder: gfx::Encoder, - // point_encoder: gfx::Encoder, pub directed_depth: Texture, pub point_depth: Texture, @@ -48,8 +46,6 @@ impl ShadowMap { let layout = shadow::ShadowLayout::new(&device); Self::Enabled(ShadowMapRenderer { - // point_encoder: factory.create_command_buffer().into(), - // directed_encoder: factory.create_command_buffer().into(), directed_depth, point_depth,