diff --git a/src/bin/minitracer/main.rs b/src/bin/minitracer/main.rs index 4310b7e..7faf46e 100644 --- a/src/bin/minitracer/main.rs +++ b/src/bin/minitracer/main.rs @@ -2,7 +2,7 @@ use std::error::Error; use glam::uvec2; use raytracing3::present::{self, Presenter}; -use raytracing3::scene::{load_envmap, Renderer, SceneParams}; +use raytracing3::scene::{Renderer, SceneParams}; use winit::{ event::{Event, WindowEvent}, event_loop::EventLoop, @@ -21,13 +21,12 @@ fn main() { .unwrap(); let (device, queue, surface) = pollster::block_on(init_gpu(window)).unwrap(); - let envmap = load_envmap(&device, &queue); queue.submit([]); let output_format = wgpu::TextureFormat::Bgra8UnormSrgb; let hdr_format = wgpu::TextureFormat::Rgba16Float; let scene = SceneParams::new(N_SPHERES); - let renderer = Renderer::new(&device, envmap); + let renderer = Renderer::new(&device); let presenter = Presenter::new(&device, output_format); let mut frame = 0; diff --git a/src/bin/rec.rs b/src/bin/rec.rs index c288f86..f610cab 100644 --- a/src/bin/rec.rs +++ b/src/bin/rec.rs @@ -8,7 +8,7 @@ use std::{fs, io}; use glam::{uvec2, UVec2}; use image::buffer::ConvertBuffer; use raytracing3::present::{self, Presenter}; -use raytracing3::scene::{load_envmap, Renderer, SceneParams}; +use raytracing3::scene::{Renderer, SceneParams}; const SIZE: UVec2 = uvec2(1920, 1080); const FRAME_RATE: u32 = 60; @@ -82,7 +82,6 @@ fn do_work(img_sender: async_channel::Sender, start_frame: u32, stop_fram let img_sender = Arc::new(img_sender); let (device, queue) = pollster::block_on(init_gpu()).unwrap(); - let envmap = load_envmap(&device, &queue); queue.submit([]); let texsize = wgpu::Extent3d { @@ -95,7 +94,7 @@ fn do_work(img_sender: async_channel::Sender, start_frame: u32, stop_fram let hdr_format = wgpu::TextureFormat::Rgba16Float; let scene = SceneParams::new(N_SPHERES); - let renderer = Renderer::new(&device, envmap); + let renderer = Renderer::new(&device); let presenter = Presenter::new(&device, output_format); println!("Rendering..."); diff --git a/src/scene.rs b/src/scene.rs index a9fc038..572edc1 100644 --- a/src/scene.rs +++ b/src/scene.rs @@ -1,5 +1,5 @@ use crate::anim::{self, SphereParams}; -use crate::trace::{self, Tracer, TracerData, TracerEnv}; +use crate::trace::{self, Tracer, TracerData}; use glam::{mat3, uvec2, vec3, UVec2, Vec3}; use image::ImageReader; use std::f32::consts::PI; @@ -33,15 +33,13 @@ const CAMERA_LAG: f32 = 0.03; pub struct Renderer { tracer: Tracer, - env: TracerEnv, } impl Renderer { - pub fn new(device: &wgpu::Device, env: wgpu::TextureView) -> Self { + pub fn new(device: &wgpu::Device) -> Self { let hdr_format = wgpu::TextureFormat::Rgba16Float; let tracer = Tracer::new(&device, hdr_format); - let env = TracerEnv::new(&device, &tracer, &env); - Self { tracer, env } + Self { tracer } } } @@ -114,7 +112,6 @@ impl Renderer { self.tracer.render( &mut render_pass.0, &data, - &self.env, trace::Params { max_reflections: 3, min_strength: 0.1, diff --git a/src/trace.rs b/src/trace.rs index e276e2e..d313574 100644 --- a/src/trace.rs +++ b/src/trace.rs @@ -119,10 +119,6 @@ pub struct TracerData { bindings: wgpu::BindGroup, } -pub struct TracerEnv { - bindings: wgpu::BindGroup, -} - static SHADER: &str = include_str!("trace.wgsl"); impl Tracer { @@ -150,30 +146,9 @@ impl Tracer { count: None, }], }); - let envmap_bgl = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { - label: None, - entries: &[ - wgpu::BindGroupLayoutEntry { - binding: 0, - visibility: wgpu::ShaderStages::FRAGMENT, - ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::Filtering), - count: None, - }, - wgpu::BindGroupLayoutEntry { - binding: 1, - visibility: wgpu::ShaderStages::FRAGMENT, - ty: wgpu::BindingType::Texture { - sample_type: wgpu::TextureSampleType::Float { filterable: true }, - view_dimension: wgpu::TextureViewDimension::Cube, - multisampled: false, - }, - count: None, - }, - ], - }); let pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { label: None, - bind_group_layouts: &[&spheres_bgl, &envmap_bgl], + bind_group_layouts: &[&spheres_bgl], push_constant_ranges: &[wgpu::PushConstantRange { stages: wgpu::ShaderStages::FRAGMENT, range: 0..mem::size_of::() as u32, @@ -258,7 +233,6 @@ impl Tracer { &self, pass: &mut wgpu::RenderPass, data: &TracerData, - env: &TracerEnv, params: Params, viewport: Viewport, aperture: Aperture, @@ -275,7 +249,6 @@ impl Tracer { ); pass.set_vertex_buffer(0, self.view_buf.slice(..)); pass.set_bind_group(0, &data.bindings, &[]); - pass.set_bind_group(1, &env.bindings, &[]); pass.draw(0..4, 0..1); } } @@ -299,24 +272,3 @@ impl TracerData { Self { bindings } } } - -impl TracerEnv { - pub fn new(device: &wgpu::Device, tracer: &Tracer, view: &wgpu::TextureView) -> Self { - let sampler = device.create_sampler(&wgpu::SamplerDescriptor::default()); - let bindings = device.create_bind_group(&wgpu::BindGroupDescriptor { - label: None, - layout: &tracer.pipeline.get_bind_group_layout(1), - entries: &[ - wgpu::BindGroupEntry { - binding: 0, - resource: wgpu::BindingResource::Sampler(&sampler), - }, - wgpu::BindGroupEntry { - binding: 1, - resource: wgpu::BindingResource::TextureView(view), - }, - ], - }); - Self { bindings } - } -} diff --git a/src/trace.wgsl b/src/trace.wgsl index 122cffc..79ba954 100644 --- a/src/trace.wgsl +++ b/src/trace.wgsl @@ -36,8 +36,6 @@ struct Varying { var params: Params; @group(0) @binding(1) var spheres: array; -@group(1) @binding(0) var env_sampler: sampler; -@group(1) @binding(1) var env_texture: texture_cube; @vertex fn on_vertex(in: Vertex) -> Varying {