diff --git a/voxygen/src/render/pipelines/lod_terrain.rs b/voxygen/src/render/pipelines/lod_terrain.rs index ec67317049..3f7361d79a 100644 --- a/voxygen/src/render/pipelines/lod_terrain.rs +++ b/voxygen/src/render/pipelines/lod_terrain.rs @@ -109,8 +109,14 @@ impl LodData { ) }; let map = create_texture(wgpu::TextureFormat::Rgba8UnormSrgb, lod_base); + // SamplerInfo { + // border: border_color, let alt = create_texture(wgpu::TextureFormat::Rg16Uint, lod_alt); + // SamplerInfo { + // border: [0.0, 0.0, 0.0, 0.0].into(), let horizon = create_texture(wgpu::TextureFormat::Rgba8Unorm, lod_horizon); + // SamplerInfo { + // border: [1.0, 0.0, 1.0, 0.0].into(), Self { map, @@ -118,43 +124,6 @@ impl LodData { horizon, tgt_detail, } - - // Self { - // map: renderer - // .create_texture_immutable_raw( - // kind, - // gfx::texture::Mipmap::Provided, - // &[gfx::memory::cast_slice(lod_base)], - // SamplerInfo { - // border: border_color, - // ..info - // }, - // ) - // .expect("Failed to generate map texture"), - // alt: renderer - // .create_texture_immutable_raw( - // kind, - // gfx::texture::Mipmap::Provided, - // &[gfx::memory::cast_slice(lod_alt)], - // SamplerInfo { - // border: [0.0, 0.0, 0.0, 0.0].into(), - // ..info - // }, - // ) - // .expect("Failed to generate alt texture"), - // horizon: renderer - // .create_texture_immutable_raw( - // kind, - // gfx::texture::Mipmap::Provided, - // &[gfx::memory::cast_slice(lod_horizon)], - // SamplerInfo { - // border: [1.0, 0.0, 1.0, 0.0].into(), - // ..info - // }, - // ) - // .expect("Failed to generate horizon texture"), - // tgt_detail, - // } } } diff --git a/voxygen/src/render/renderer.rs b/voxygen/src/render/renderer.rs index 38e0c378f1..ba0ce23f90 100644 --- a/voxygen/src/render/renderer.rs +++ b/voxygen/src/render/renderer.rs @@ -230,7 +230,7 @@ pub struct Renderer { sampler: wgpu::Sampler, shadow_map: Option, - + //dummy_shadow_tex: wgpu::TextureView, layouts: Layouts, figure_pipeline: figure::FigurePipeline, @@ -2306,9 +2306,9 @@ fn create_shader_module( .compile_into_spirv(source, kind, file_name, "main", Some(options)) .map_err(|e| (file_name, e))?; - Ok( - device.create_shader_module(wgpu::ShaderModuleSource::SpirV(Cow::Borrowed( - spv.as_binary(), - ))), - ) + Ok(device.create_shader_module(&wgpu::ShaderModuleDescriptor { + label: Some(source), + source: wgpu::ShaderSource::SpirV(Cow::Borrowed(spv.as_binary())), + experimental_translation: false, + })) } diff --git a/voxygen/src/render/renderer/binding.rs b/voxygen/src/render/renderer/binding.rs index 4825b4a058..e67a6890b9 100644 --- a/voxygen/src/render/renderer/binding.rs +++ b/voxygen/src/render/renderer/binding.rs @@ -17,7 +17,7 @@ impl Renderer { Some(shadow_map) => (&shadow_map.point_depth, &shadow_map.directed_depth), None => (&self.noise_tex, &self.noise_tex), }; - + dbg!(self.shadow_map.is_some()); self.layouts.global.bind( &self.device, global_model, diff --git a/voxygen/src/render/renderer/drawer.rs b/voxygen/src/render/renderer/drawer.rs index a949c07740..c30edb025b 100644 --- a/voxygen/src/render/renderer/drawer.rs +++ b/voxygen/src/render/renderer/drawer.rs @@ -5,8 +5,8 @@ use super::{ instances::Instances, model::{DynamicModel, Model, SubModel}, pipelines::{ - clouds, figure, fluid, particle, postprocess, skybox, sprite, terrain, ui, ColLights, - GlobalsBindGroup, Light, Shadow, + clouds, figure, fluid, lod_terrain, particle, postprocess, skybox, sprite, terrain, ui, + ColLights, GlobalsBindGroup, Light, Shadow, }, }, Renderer, @@ -144,6 +144,13 @@ impl<'a> FirstPassDrawer<'a> { self.render_pass.draw(0..model.len() as u32, 0..1); } + pub fn draw_lod_terrain<'b: 'a>(&mut self, model: &'b Model) { + self.render_pass + .set_pipeline(&self.renderer.lod_terrain_pipeline.pipeline); + self.render_pass.set_vertex_buffer(0, model.buf().slice(..)); + self.render_pass.draw(0..model.len() as u32, 0..1); + } + pub fn draw_figure<'b: 'a>( &mut self, model: SubModel<'b, terrain::Vertex>, diff --git a/voxygen/src/scene/lod.rs b/voxygen/src/scene/lod.rs index 17bfd64907..570850f6dc 100644 --- a/voxygen/src/scene/lod.rs +++ b/voxygen/src/scene/lod.rs @@ -1,7 +1,7 @@ use crate::{ render::{ pipelines::lod_terrain::{LodData, Vertex}, - GlobalModel, LodTerrainVertex, Mesh, Model, Quad, Renderer, + FirstPassDrawer, GlobalModel, LodTerrainVertex, Mesh, Model, Quad, Renderer, }, settings::Settings, }; @@ -59,10 +59,9 @@ impl Lod { } } - pub fn render(&self, renderer: &mut Renderer, global: &GlobalModel) { + pub fn render<'a>(&'a self, drawer: &mut FirstPassDrawer<'a>) { if let Some((_, model)) = self.model.as_ref() { - //renderer.render_lod_terrain(&model, global, &self.locals, - // &self.data); + drawer.draw_lod_terrain(&model); } } } diff --git a/voxygen/src/scene/mod.rs b/voxygen/src/scene/mod.rs index 6e51542b23..7c5e2d30c8 100644 --- a/voxygen/src/scene/mod.rs +++ b/voxygen/src/scene/mod.rs @@ -1030,8 +1030,9 @@ impl Scene { global, lod, camera_data, - ); - self.lod.render(renderer, global);*/ + );*/ + + self.lod.render(drawer); // Render the skybox. drawer.draw_skybox(&self.skybox.model);