From 2ad472538c67b0994026b6692d92bad74de598ae Mon Sep 17 00:00:00 2001 From: OptimisticPeach Date: Mon, 15 Jun 2020 22:50:31 -0400 Subject: [PATCH] [rs] Add water example --- wgpu/Cargo.toml | 1 + wgpu/examples/water/README.md | 34 + wgpu/examples/water/main.rs | 805 ++++++++++++++++++++ wgpu/examples/water/point_gen.rs | 283 +++++++ wgpu/examples/water/screenshot.png | Bin 0 -> 200271 bytes wgpu/examples/water/terrain_shader.frag | 21 + wgpu/examples/water/terrain_shader.frag.spv | Bin 0 -> 804 bytes wgpu/examples/water/terrain_shader.vert | 40 + wgpu/examples/water/terrain_shader.vert.spv | Bin 0 -> 2496 bytes wgpu/examples/water/water_shader.frag | 48 ++ wgpu/examples/water/water_shader.frag.spv | Bin 0 -> 3520 bytes wgpu/examples/water/water_shader.vert | 213 ++++++ wgpu/examples/water/water_shader.vert.spv | Bin 0 -> 17708 bytes 13 files changed, 1445 insertions(+) create mode 100644 wgpu/examples/water/README.md create mode 100644 wgpu/examples/water/main.rs create mode 100644 wgpu/examples/water/point_gen.rs create mode 100644 wgpu/examples/water/screenshot.png create mode 100644 wgpu/examples/water/terrain_shader.frag create mode 100644 wgpu/examples/water/terrain_shader.frag.spv create mode 100644 wgpu/examples/water/terrain_shader.vert create mode 100644 wgpu/examples/water/terrain_shader.vert.spv create mode 100644 wgpu/examples/water/water_shader.frag create mode 100644 wgpu/examples/water/water_shader.frag.spv create mode 100644 wgpu/examples/water/water_shader.vert create mode 100644 wgpu/examples/water/water_shader.vert.spv diff --git a/wgpu/Cargo.toml b/wgpu/Cargo.toml index d193524de0..e4fb28d448 100644 --- a/wgpu/Cargo.toml +++ b/wgpu/Cargo.toml @@ -57,6 +57,7 @@ png = "0.16" winit = { version = "0.22.1", features = ["web-sys"] } rand = { version = "0.7.2", features = ["wasm-bindgen"] } bytemuck = "1" +noise = "0.6.0" [[example]] name="hello-compute" diff --git a/wgpu/examples/water/README.md b/wgpu/examples/water/README.md new file mode 100644 index 0000000000..413af78a0c --- /dev/null +++ b/wgpu/examples/water/README.md @@ -0,0 +1,34 @@ +# Water example + +This example renders animated water. + +It demonstrates Read only Depth/Stencil (abbreviated RODS), where a depth/stencil buffer is used as an attachment which is read-only. In this case it's used in the shaders to calculate reflections and depth. + +## Files: +``` +water +├── main.rs ------------------ Main program +├── point_gen.rs ------------- Hexagon point generation +├── README.md ---------------- This readme +├── screenshot.png ----------- Screenshot +├── terrain_shader.frag ------ Terrain fragment shader +├── terrain_shader.frag.spv -- Compiled terrain fragment shader +├── terrain_shader.vert ------ Terrain vertex shader +├── terrain_shader.vert.spv -- Compiled terrain vertex shader +├── water_shader.frag -------- Water fragment shader +├── water_shader.frag.spv ---- Compiled water fragment shader +├── water_shader.vert -------- Water vertex shader +└── water_shader.vert.spv ---- Compiled water vertex shader +``` + +## To run +``` +cargo run --example water +``` +## To recompile shaders +(requires make and `glslangvalidator`) +``` +make +``` +## Screenshot +![Water example](./screenshot.png) diff --git a/wgpu/examples/water/main.rs b/wgpu/examples/water/main.rs new file mode 100644 index 0000000000..94244a45fc --- /dev/null +++ b/wgpu/examples/water/main.rs @@ -0,0 +1,805 @@ +#[path = "../framework.rs"] +mod framework; + +mod point_gen; + +use cgmath::Point3; + +use wgpu::vertex_attr_array; + +/// +/// Radius of the terrain. +/// +/// Changing this value will change the size of the +/// water and terrain. Note however, that changes to +/// this value will require modification of the time +/// scale in the `render` method below. +/// +const SIZE: f32 = 10.0; + +/// +/// Location of the camera. +/// Location of light is in terrain/water shaders. +/// +const CAMERA: Point3 = Point3 { x: -100.0, y: 50.0, z: 100.0 }; + +struct Matrices { + view: cgmath::Matrix4, + flipped_view: cgmath::Matrix4, + projection: cgmath::Matrix4, +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, PartialEq)] +struct TerrainUniforms { + view_projection: [f32; 16], + clipping_plane: [f32; 4], +} + +unsafe impl bytemuck::Zeroable for TerrainUniforms {} +unsafe impl bytemuck::Pod for TerrainUniforms {} + +#[repr(C)] +#[derive(Copy, Clone, Debug, PartialEq)] +struct WaterUniforms { + view: [f32; 16], + projection: [f32; 16], + time_size_width: [f32; 4], + height: f32, +} + +struct Uniforms { + terrain_normal: TerrainUniforms, + terrain_flipped: TerrainUniforms, + water: WaterUniforms, +} + +unsafe impl bytemuck::Zeroable for WaterUniforms {} +unsafe impl bytemuck::Pod for WaterUniforms {} + +struct Example { + water_vertex_buf: wgpu::Buffer, + water_vertex_count: usize, + water_bind_group_layout: wgpu::BindGroupLayout, + water_bind_group: wgpu::BindGroup, + water_uniform_buf: wgpu::Buffer, + water_pipeline: wgpu::RenderPipeline, + + terrain_vertex_buf: wgpu::Buffer, + terrain_vertex_count: usize, + terrain_normal_bind_group: wgpu::BindGroup, + /// + /// Binds to the uniform buffer where the + /// camera has been placed underwater. + /// + terrain_flipped_bind_group: wgpu::BindGroup, + terrain_normal_uniform_buf: wgpu::Buffer, + /// + /// Contains uniform variables where the camera + /// has been placed underwater. + /// + terrain_flipped_uniform_buf: wgpu::Buffer, + terrain_pipeline: wgpu::RenderPipeline, + + reflect_view: wgpu::TextureView, + + depth_buffer: wgpu::TextureView, + + current_frame: usize, + + /// + /// Used to prevent issues when rendering after + /// minimizing the window. + /// + active: Option, +} + +impl Example { + /// + /// Creates the view matrices, and the corrected projection matrix. + /// + fn generate_matrices(aspect_ratio: f32) -> Matrices { + let projection = cgmath::perspective(cgmath::Deg(45f32), aspect_ratio, 10.0, 400.0); + let reg_view = cgmath::Matrix4::look_at( + CAMERA, + cgmath::Point3::new(0f32, 0.0, 0.0), + cgmath::Vector3::unit_y(), //Note that y is up. Differs from other examples. + ); + + let scale = cgmath::Matrix4::from_nonuniform_scale(8.0, 1.5, 8.0); + + let reg_view = reg_view * scale; + + let flipped_view = cgmath::Matrix4::look_at( + cgmath::Point3::new(CAMERA.x, -CAMERA.y, CAMERA.z), + cgmath::Point3::new(0f32, 0.0, 0.0), + cgmath::Vector3::unit_y(), + ); + + + let correction = framework::OPENGL_TO_WGPU_MATRIX; + + let flipped_view = flipped_view * scale; + + Matrices { + view: reg_view, + flipped_view, + projection: correction * projection, + } + } + + fn generate_uniforms(width: u32, height: u32) -> Uniforms { + let Matrices { + view, + flipped_view, + projection + } = Self::generate_matrices(width as f32 / height as f32); + + Uniforms { + terrain_normal: TerrainUniforms { + view_projection: *(projection * view).as_ref(), + clipping_plane: [0.0; 4], + }, + terrain_flipped: TerrainUniforms { + view_projection: *(projection * flipped_view).as_ref(), + clipping_plane: [0., 1., 0., 0.], + }, + water: WaterUniforms { + view: *view.as_ref(), + projection: *projection.as_ref(), + time_size_width: [0.0, 1.0, SIZE * 2.0, width as f32], + height: height as f32 + } + } + } + + /// + /// Initializes Uniforms and textures. + /// + fn initialize_resources( + sc_desc: &wgpu::SwapChainDescriptor, + device: &wgpu::Device, + queue: &wgpu::Queue, + water_uniforms: &wgpu::Buffer, + terrain_normal_uniforms: &wgpu::Buffer, + terrain_flipped_uniforms: &wgpu::Buffer, + water_bind_group_layout: &wgpu::BindGroupLayout, + ) -> (wgpu::TextureView, wgpu::TextureView, wgpu::BindGroup) { + // Matrices for our projection and view. + // flipped_view is the view from under the water. + let Uniforms { + terrain_normal, + terrain_flipped, + water, + } = Self::generate_uniforms(sc_desc.width, sc_desc.height); + + // Put the uniforms into buffers on the GPU + queue.write_buffer(terrain_normal_uniforms, 0, bytemuck::cast_slice(&[terrain_normal])); + queue.write_buffer(terrain_flipped_uniforms, 0, bytemuck::cast_slice(&[terrain_flipped])); + queue.write_buffer(water_uniforms, 0, bytemuck::cast_slice(&[water])); + + let texture_extent = wgpu::Extent3d { + width: sc_desc.width, + height: sc_desc.height, + depth: 1, + }; + + let reflection_texture = device.create_texture(&wgpu::TextureDescriptor { + label: Some("Reflection Render Texture"), + size: texture_extent, + mip_level_count: 1, + sample_count: 1, + dimension: wgpu::TextureDimension::D2, + format: sc_desc.format, + usage: wgpu::TextureUsage::SAMPLED | wgpu::TextureUsage::COPY_DST | wgpu::TextureUsage::OUTPUT_ATTACHMENT, + }); + + let draw_depth_buffer = device.create_texture(&wgpu::TextureDescriptor { + label: Some("Depth Buffer"), + size: texture_extent, + mip_level_count: 1, + sample_count: 1, + dimension: wgpu::TextureDimension::D2, + format: wgpu::TextureFormat::Depth32Float, + usage: wgpu::TextureUsage::SAMPLED | wgpu::TextureUsage::COPY_DST | wgpu::TextureUsage::OUTPUT_ATTACHMENT, + }); + + let sampler = device.create_sampler(&wgpu::SamplerDescriptor { + label: Some("Texture Sampler"), + address_mode_u: wgpu::AddressMode::ClampToEdge, + address_mode_v: wgpu::AddressMode::ClampToEdge, + address_mode_w: wgpu::AddressMode::ClampToEdge, + mag_filter: wgpu::FilterMode::Nearest, + min_filter: wgpu::FilterMode::Linear, + mipmap_filter: wgpu::FilterMode::Nearest, + ..Default::default() + }); + + let water_bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { + layout: water_bind_group_layout, + bindings: &[ + wgpu::Binding { + binding: 0, + resource: wgpu::BindingResource::Buffer(water_uniforms.slice(..)), + }, + wgpu::Binding { + binding: 1, + resource: wgpu::BindingResource::TextureView(&reflection_texture.create_default_view()), + }, + wgpu::Binding { + binding: 2, + resource: wgpu::BindingResource::TextureView(&draw_depth_buffer.create_default_view()) + }, + wgpu::Binding { + binding: 3, + resource: wgpu::BindingResource::Sampler(&sampler), + }, + ], + label: Some("Water Bind Group"), + }); + + (reflection_texture.create_default_view(), draw_depth_buffer.create_default_view(), water_bind_group) + } +} + +impl framework::Example for Example { + fn init( + sc_desc: &wgpu::SwapChainDescriptor, + device: &wgpu::Device, + queue: &wgpu::Queue, + ) -> (Self, Option) { + use std::mem; + + // Size of one water vertex + let water_vertex_size = mem::size_of::(); + + let water_vertices = point_gen::HexWaterMesh::generate(SIZE).generate_points(); + + // Size of one terrain vertex + let terrain_vertex_size = mem::size_of::(); + + // Noise generation + let terrain_noise = noise::OpenSimplex::new(); + + // Random colouration + let mut terrain_random = rand::thread_rng(); + + // Generate terrain. The closure determines what each hexagon will look like. + let terrain = point_gen::HexTerrainMesh::generate(SIZE, |point| -> point_gen::TerrainVertex { + use rand::Rng; + use noise::NoiseFn; + let noise = terrain_noise.get([point[0] as f64 / 5.0, point[1] as f64 / 5.0]) + 0.1; + + let y = noise as f32 * 8.0; + + // Multiplies a colour by some random amount. + fn mul_arr(mut arr: [u8; 4], by: f32) -> [u8; 4] { + arr[0] = (arr[0] as f32 * by).min(255.0) as u8; + arr[1] = (arr[1] as f32 * by).min(255.0) as u8; + arr[2] = (arr[2] as f32 * by).min(255.0) as u8; + arr + } + + // Under water + const DARK_SAND: [u8; 4] = [235, 175, 71, 255]; + // Coast + const SAND: [u8; 4] = [217, 191, 76, 255]; + // Normal + const GRASS: [u8; 4] = [122, 170, 19, 255]; + // Mountain + const SNOW: [u8; 4] = [175, 224, 237, 255]; + + // Random colouration. + let random = terrain_random.gen::() * 0.2 + 0.9; + + // Choose colour. + let colour = if y <= 0.0 { + DARK_SAND + } else if y <= 0.8 { + SAND + } else if y <= 3.0 { + GRASS + } else { + SNOW + }; + point_gen::TerrainVertex { + position: Point3 { x: point[0], y, z: point[1] }, + colour: mul_arr(colour, random), + } + }); + + // Generate the buffer data. + let terrain_vertices = terrain.make_buffer_data(); + + // Create the buffers on the GPU to hold the data. + let water_vertex_buf = device.create_buffer_with_data( + bytemuck::cast_slice(&water_vertices), + wgpu::BufferUsage::VERTEX, + ); + + let terrain_vertex_buf = device.create_buffer_with_data( + bytemuck::cast_slice(&terrain_vertices), + wgpu::BufferUsage::VERTEX, + ); + + // Create the bind group layout. This is what our uniforms will look like. + let water_bind_group_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { + label: Some("Water Bind Group Layout"), + bindings: &[ + // Uniform variables such as projection/view. + wgpu::BindGroupLayoutEntry { + binding: 0, + visibility: wgpu::ShaderStage::VERTEX | wgpu::ShaderStage::FRAGMENT, + ty: wgpu::BindingType::UniformBuffer { dynamic: false }, + count: None, + ..Default::default() + }, + // Reflection texture. + wgpu::BindGroupLayoutEntry { + binding: 1, + visibility: wgpu::ShaderStage::FRAGMENT, + ty: wgpu::BindingType::SampledTexture { + multisampled: false, + component_type: wgpu::TextureComponentType::Float, + dimension: wgpu::TextureViewDimension::D2, + }, + count: None, + ..Default::default() + }, + // Depth texture for terrain. + wgpu::BindGroupLayoutEntry { + binding: 2, + visibility: wgpu::ShaderStage::FRAGMENT, + ty: wgpu::BindingType::SampledTexture { + multisampled: false, + component_type: wgpu::TextureComponentType::Float, + dimension: wgpu::TextureViewDimension::D2, + }, + count: None, + ..Default::default() + }, + // Sampler to be able to sample the textures. + wgpu::BindGroupLayoutEntry { + binding: 3, + visibility: wgpu::ShaderStage::FRAGMENT, + ty: wgpu::BindingType::Sampler { comparison: false }, + count: None, + ..Default::default() + }, + ], + }); + + let terrain_bind_group_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { + label: Some("Terrain Bind Group Layout"), + bindings: &[ + // Regular uniform variables like view/projection. + wgpu::BindGroupLayoutEntry { + binding: 0, + visibility: wgpu::ShaderStage::VERTEX, + ty: wgpu::BindingType::UniformBuffer { dynamic: false }, + count: None, + ..Default::default() + }, + ], + }); + + // Create our pipeline layouts. + let water_pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { + bind_group_layouts: &[&water_bind_group_layout], + }); + + let terrain_pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { + bind_group_layouts: &[&terrain_bind_group_layout], + }); + + let water_uniform_buf = device.create_buffer(&wgpu::BufferDescriptor { + label: Some("Water Uniforms"), + size: std::mem::size_of::() as _, + usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, + mapped_at_creation: false, + }); + + let terrain_normal_uniform_buf = device.create_buffer(&wgpu::BufferDescriptor { + label: Some("Normal Terrain Uniforms"), + size: std::mem::size_of::() as _, + usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, + mapped_at_creation: false, + }); + + let terrain_flipped_uniform_buf = device.create_buffer(&wgpu::BufferDescriptor { + label: Some("Flipped Terrain Uniforms"), + size: std::mem::size_of::() as _, + usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, + mapped_at_creation: false, + }); + + // Create bind group. + // This puts values behind what was laid out in the bind group layout. + + let (reflect_view, depth_buffer, water_bind_group) = Self::initialize_resources( + sc_desc, + device, + queue, + &water_uniform_buf, + &terrain_normal_uniform_buf, + &terrain_flipped_uniform_buf, + &water_bind_group_layout + ); + + let terrain_normal_bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { + layout: &terrain_bind_group_layout, + bindings: &[ + wgpu::Binding { + binding: 0, + resource: wgpu::BindingResource::Buffer(terrain_normal_uniform_buf.slice(..)), + }, + ], + label: Some("Terrain Normal Bind Group"), + }); + let terrain_flipped_bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { + layout: &terrain_bind_group_layout, + bindings: &[ + wgpu::Binding { + binding: 0, + resource: wgpu::BindingResource::Buffer(terrain_flipped_uniform_buf.slice(..)) + } + ], + label: Some("Terrain Flipped Bind Group"), + }); + + // Read shaders from file. + let water_vs_bytes = include_bytes!("water_shader.vert.spv"); + let water_fs_bytes = include_bytes!("water_shader.frag.spv"); + // Upload/compile them to GPU code. + let water_vs_module = device + .create_shader_module(&wgpu::read_spirv(std::io::Cursor::new(&water_vs_bytes[..])).unwrap()); + let water_fs_module = device + .create_shader_module(&wgpu::read_spirv(std::io::Cursor::new(&water_fs_bytes[..])).unwrap()); + + let terrain_vs_bytes = include_bytes!("terrain_shader.vert.spv"); + let terrain_fs_bytes = include_bytes!("terrain_shader.frag.spv"); + let terrain_vs_module = device + .create_shader_module(&wgpu::read_spirv(std::io::Cursor::new(&terrain_vs_bytes[..])).unwrap()); + let terrain_fs_module = device + .create_shader_module(&wgpu::read_spirv(std::io::Cursor::new(&terrain_fs_bytes[..])).unwrap()); + + // Create the render pipelines. These describe how the data will flow through the GPU, and what + // constraints and modifiers it will have. + let water_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { + // The "layout" is what uniforms will be needed. + layout: &water_pipeline_layout, + // Vertex & Fragment shaders + vertex_stage: wgpu::ProgrammableStageDescriptor { + module: &water_vs_module, + entry_point: "main", + }, + fragment_stage: Some(wgpu::ProgrammableStageDescriptor { + module: &water_fs_module, + entry_point: "main", + }), + // How the triangles will be rasterized. This is more important + // for the terrain because of the beneath-the water shot. + // This is also dependent on how the triangles are being generated. + rasterization_state: Some(wgpu::RasterizationStateDescriptor { + front_face: wgpu::FrontFace::Cw, + cull_mode: wgpu::CullMode::None, + depth_bias: 0, + depth_bias_slope_scale: 0.0, + depth_bias_clamp: 0.0, + }), + // What kind of data are we passing in? + primitive_topology: wgpu::PrimitiveTopology::TriangleList, + // Describes how the colour will be interpolated + // and assigned to the output attachment. + color_states: &[wgpu::ColorStateDescriptor { + format: sc_desc.format, + color_blend: wgpu::BlendDescriptor { + src_factor: wgpu::BlendFactor::SrcAlpha, + dst_factor: wgpu::BlendFactor::OneMinusSrcAlpha, + operation: wgpu::BlendOperation::Add, + }, + alpha_blend: wgpu::BlendDescriptor { + src_factor: wgpu::BlendFactor::One, + dst_factor: wgpu::BlendFactor::One, + operation: wgpu::BlendOperation::Max, + }, + write_mask: wgpu::ColorWrite::ALL, + }], + // Describes how us writing to the depth/stencil buffer + // will work. Since this is water, we need to read from the + // depth buffer both as a texture in the shader, and as an + // input attachment to do depth-testing. We don't write, so + // depth_write_enabled is set to false. This is called + // RODS or read-only depth stencil. + depth_stencil_state: Some(wgpu::DepthStencilStateDescriptor { + // We don't use stencil. + format: wgpu::TextureFormat::Depth32Float, + depth_write_enabled: false, + depth_compare: wgpu::CompareFunction::Less, + stencil_front: wgpu::StencilStateFaceDescriptor::IGNORE, + stencil_back: wgpu::StencilStateFaceDescriptor::IGNORE, + stencil_read_mask: 0, + stencil_write_mask: 0, + }), + // Layout of our vertices. This should match the structs + // which are uploaded to the GPU. This should also be + // ensured by tagging on either a `#[repr(C)]` onto a + // struct, or a `#[repr(transparent)]` if it only contains + // one item, which is itself `repr(C)`. + vertex_state: wgpu::VertexStateDescriptor { + // We don't actually use indices, since it's unnecessary + // because we duplicate all the data anyway. This is + // necessary to achieve the low-poly effect. + index_format: wgpu::IndexFormat::Uint16, + vertex_buffers: &[ + wgpu::VertexBufferDescriptor { + stride: water_vertex_size as wgpu::BufferAddress, + step_mode: wgpu::InputStepMode::Vertex, + attributes: &vertex_attr_array![0 => Short2, 1 => Char4], + }, + ], + }, + sample_count: 1, + sample_mask: !0, + alpha_to_coverage_enabled: false, + }); + + // Same idea as the water pipeline. + let terrain_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { + layout: &terrain_pipeline_layout, + vertex_stage: wgpu::ProgrammableStageDescriptor { + module: &terrain_vs_module, + entry_point: "main", + }, + fragment_stage: Some(wgpu::ProgrammableStageDescriptor { + module: &terrain_fs_module, + entry_point: "main", + }), + rasterization_state: Some(wgpu::RasterizationStateDescriptor { + front_face: wgpu::FrontFace::Ccw, + cull_mode: wgpu::CullMode::Front, + depth_bias: 0, + depth_bias_slope_scale: 0.0, + depth_bias_clamp: 0.0, + }), + primitive_topology: wgpu::PrimitiveTopology::TriangleList, + color_states: &[wgpu::ColorStateDescriptor { + format: sc_desc.format, + color_blend: wgpu::BlendDescriptor::REPLACE, + alpha_blend: wgpu::BlendDescriptor::REPLACE, + write_mask: wgpu::ColorWrite::ALL, + }], + depth_stencil_state: Some(wgpu::DepthStencilStateDescriptor { + format: wgpu::TextureFormat::Depth32Float, + depth_write_enabled: true, + depth_compare: wgpu::CompareFunction::Less, + stencil_front: wgpu::StencilStateFaceDescriptor::IGNORE, + stencil_back: wgpu::StencilStateFaceDescriptor::IGNORE, + stencil_read_mask: 0, + stencil_write_mask: 0, + }), + vertex_state: wgpu::VertexStateDescriptor { + index_format: wgpu::IndexFormat::Uint16, + vertex_buffers: &[ + wgpu::VertexBufferDescriptor { + stride: terrain_vertex_size as wgpu::BufferAddress, + step_mode: wgpu::InputStepMode::Vertex, + attributes: &vertex_attr_array![0 => Float3, 1 => Float3, 2 => Uchar4Norm], + }, + ], + }, + sample_count: 1, + sample_mask: !0, + alpha_to_coverage_enabled: false, + }); + + // Done + let this = Example { + water_vertex_buf, + water_vertex_count: water_vertices.len(), + water_bind_group_layout, + water_bind_group, + water_uniform_buf, + water_pipeline, + + terrain_vertex_buf, + terrain_vertex_count: terrain_vertices.len(), + terrain_normal_bind_group, + terrain_flipped_bind_group, + terrain_normal_uniform_buf, + terrain_flipped_uniform_buf, + terrain_pipeline, + + reflect_view, + + depth_buffer, + + current_frame: 0, + + active: Some(0), + }; + (this, None) + } + + fn update(&mut self, _event: winit::event::WindowEvent) { + //empty + } + + fn resize( + &mut self, + sc_desc: &wgpu::SwapChainDescriptor, + device: &wgpu::Device, + queue: &wgpu::Queue, + ) { + if sc_desc.width == 0 && sc_desc.height == 0 { + // Stop rendering altogether. + self.active = None; + return; + } else { + // The next frame queued is the wrong size: (0, 0), + // so we skip a frame to avoid crashes where our + // textures are the correct (window) size, and the + // frame is still (0, 0). + self.active = Some(self.current_frame + 1); + } + + // Regenerate all of the buffers and textures. + + let (reflect_view, depth_buffer, water_bind_group) = Self::initialize_resources( + sc_desc, + device, + queue, + &self.water_uniform_buf, + &self.terrain_normal_uniform_buf, + &self.terrain_flipped_uniform_buf, + &self.water_bind_group_layout + ); + self.water_bind_group = water_bind_group; + + self.depth_buffer = depth_buffer; + self.reflect_view = reflect_view; + } + + fn render( + &mut self, + frame: &wgpu::SwapChainTexture, + device: &wgpu::Device, + queue: &wgpu::Queue, + ) -> wgpu::CommandBuffer { + // Increment frame count regardless of if we draw. + self.current_frame += 1; + + // Write the sin/cos values to the uniform buffer for the water. + let (water_sin, water_cos) = ((self.current_frame as f32) / 600.0).sin_cos(); + queue.write_buffer(&self.water_uniform_buf, std::mem::size_of::<[f32; 16]>() as wgpu::BufferAddress * 2, bytemuck::cast_slice(&[water_sin, water_cos])); + + // The encoder provides a way to turn our instructions here, into + // a command buffer the GPU can understand. + let mut encoder = + device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: Some("Main Command Encoder") }); + + // Only render valid frames. See resize method. + if let Some(active) = self.active { + if active >= self.current_frame { + return encoder.finish(); + } + } else { + return encoder.finish(); + } + + // First pass: render the reflection. + { + let mut rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + color_attachments: &[ + wgpu::RenderPassColorAttachmentDescriptor { + attachment: &self.reflect_view, + resolve_target: None, + load_op: wgpu::LoadOp::Clear, + store_op: wgpu::StoreOp::Store, + clear_color: wgpu::Color { + r: 161.0 / 255.0, + g: 246.0 / 255.0, + b: 255.0 / 255.0, + a: 1.0, + }, + }, + ], + // We still need to use the depth buffer here + // since the pipeline requires it. + depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachmentDescriptor { + attachment: &self.depth_buffer, + depth_load_op: wgpu::LoadOp::Clear, + depth_store_op: wgpu::StoreOp::Clear, + clear_depth: 1.0, + depth_read_only: false, + stencil_load_op: wgpu::LoadOp::Clear, + stencil_store_op: wgpu::StoreOp::Store, + clear_stencil: 0, + stencil_read_only: false, + }), + }); + rpass.set_pipeline(&self.terrain_pipeline); + rpass.set_bind_group(0, &self.terrain_flipped_bind_group, &[]); + rpass.set_vertex_buffer(0, self.terrain_vertex_buf.slice(..)); + rpass.draw(0..self.terrain_vertex_count as u32, 0..1); + } + // Terrain right side up. This time we need to use the + // depth values, so we must use StoreOp::Store. + { + let mut rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + color_attachments: &[ + wgpu::RenderPassColorAttachmentDescriptor { + attachment: &frame.view, + resolve_target: None, + load_op: wgpu::LoadOp::Clear, + store_op: wgpu::StoreOp::Store, + clear_color: wgpu::Color { + r: 161.0 / 255.0, + g: 246.0 / 255.0, + b: 255.0 / 255.0, + a: 1.0, + }, + }, + ], + depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachmentDescriptor { + attachment: &self.depth_buffer, + depth_load_op: wgpu::LoadOp::Clear, + depth_store_op: wgpu::StoreOp::Store, + clear_depth: 1.0, + depth_read_only: false, + stencil_load_op: wgpu::LoadOp::Clear, + stencil_store_op: wgpu::StoreOp::Store, + clear_stencil: 0, + stencil_read_only: false, + }), + }); + rpass.set_pipeline(&self.terrain_pipeline); + rpass.set_bind_group(0, &self.terrain_normal_bind_group, &[]); + rpass.set_vertex_buffer(0, self.terrain_vertex_buf.slice(..)); + rpass.draw(0..self.terrain_vertex_count as u32, 0..1); + } + // Render the water. This reads from the depth buffer, but does not write + // to it, so it cannot be in the same render pass. + { + let mut rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + color_attachments: &[ + wgpu::RenderPassColorAttachmentDescriptor { + attachment: &frame.view, + resolve_target: None, + load_op: wgpu::LoadOp::Load, + store_op: wgpu::StoreOp::Store, + clear_color: wgpu::Color { + r: 161.0 / 255.0, + g: 246.0 / 255.0, + b: 255.0 / 255.0, + a: 1.0, + }, + }, + ], + depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachmentDescriptor { + attachment: &self.depth_buffer, + depth_load_op: wgpu::LoadOp::Load, + depth_store_op: wgpu::StoreOp::Store, + clear_depth: 1.0, + depth_read_only: true, + stencil_load_op: wgpu::LoadOp::Load, + stencil_store_op: wgpu::StoreOp::Store, + clear_stencil: 0, + stencil_read_only: false, + }), + }); + + rpass.set_pipeline(&self.water_pipeline); + rpass.set_bind_group(0, &self.water_bind_group, &[]); + rpass.set_vertex_buffer(0, self.water_vertex_buf.slice(..)); + rpass.draw(0..self.water_vertex_count as u32, 0..1); + } + + + encoder.finish() + } +} + +fn main() { + framework::run::("water"); +} diff --git a/wgpu/examples/water/point_gen.rs b/wgpu/examples/water/point_gen.rs new file mode 100644 index 0000000000..b94b9a50ca --- /dev/null +++ b/wgpu/examples/water/point_gen.rs @@ -0,0 +1,283 @@ +//! +//! This module covers generating points in a hexagonal fashion. +//! + +use std::collections::HashMap; +use cgmath::{Vector3, Point3, InnerSpace}; + +// The following constants are used in calculations. +// A and B are multiplication factors for x and y. + +/// +/// X multiplication factor. +/// 1.0 / sqrt(2) +/// +const A: f32 = std::f32::consts::FRAC_1_SQRT_2; + +/// +/// Y multiplication factor. +/// sqrt(3) / sqrt(2) == sqrt(1.5) +/// +const B: f32 = SQRT_3 * A; + +/// +/// `sin(45deg)` is used to rotate the points. +/// +const S45: f32 = std::f32::consts::FRAC_1_SQRT_2; +/// +/// `cos(45deg)` is used to rotate the points. +/// +const C45: f32 = S45; + +const SQRT_3: f32 = 1.73205080757; + +#[repr(C)] +#[derive(Copy, Clone, Debug, PartialEq)] +pub struct TerrainVertexAttributes { + position: [f32; 3], + normal: [f32; 3], + colour: [u8; 4], +} + +unsafe impl bytemuck::Pod for TerrainVertexAttributes {} + +unsafe impl bytemuck::Zeroable for TerrainVertexAttributes {} + +#[repr(C)] +#[derive(Copy, Clone, Debug, PartialEq)] +pub struct WaterVertexAttributes { + position: [i16; 2], + offsets: [i8; 4], +} + +unsafe impl bytemuck::Pod for WaterVertexAttributes {} + +unsafe impl bytemuck::Zeroable for WaterVertexAttributes {} + +/// +/// Represents the center of a single hexagon. +/// +#[derive(Copy, Clone, Debug)] +pub struct TerrainVertex { + pub position: Point3, + pub colour: [u8; 4], +} + +/// +/// Gets the surrounding hexagonal points from a point. +/// +/// +---0---1 +/// | / | | +/// 5---p---2 +/// | | / | +/// 4---3---+ +/// +fn surrounding_hexagonal_points(x: isize, y: isize) -> [(isize, isize); 6] { + [ + (x, y - 1), + (x + 1, y - 1), + (x + 1, y), + (x, y + 1), + (x - 1, y + 1), + (x - 1, y), + ] +} + +fn surrounding_point_values_iter(hashmap: &HashMap<(isize, isize), T>, x: isize, y: isize, for_each: impl FnMut((&T, &T))) { + let points = surrounding_hexagonal_points(x, y); + let points = [points[0], points[1], points[2], points[3], points[4], points[5], points[0]]; + points + .windows(2) + .map(|x| (hashmap.get(&x[0]), hashmap.get(&x[1]))) + .flat_map(|(a, b)| a.and_then(|x| b.map(|y| (x, y)))) + .for_each(for_each); +} + +/// +/// Used in calculating terrain normals. +/// +pub fn calculate_normal(a: Point3, b: Point3, c: Point3) -> Vector3 { + (b - a).normalize().cross((c - a).normalize()).normalize() +} + +/// +/// Given the radius, how large of a square do we need to make a unit hexagon grid? +/// +fn q_given_r(radius: f32) -> usize { + ((((((4.0 * radius) / SQRT_3) + 1.0).floor() / 2.0).floor() * 2.0) + 1.0) as usize +} + +/// +/// Represents terrain, however it contains the vertices only once. +/// +#[derive(Clone)] +pub struct HexTerrainMesh { + pub vertices: HashMap<(isize, isize), TerrainVertex>, + half_size: isize, +} + +impl HexTerrainMesh { + /// + /// Generates the vertices (or the centers of the hexagons). The colour and height is determined by + /// a function passed in by the user. + /// + pub fn generate(radius: f32, mut gen_vertex: impl FnMut([f32; 2]) -> TerrainVertex) -> Self { + let width = q_given_r(radius); + let half_width = (width / 2) as isize; + let mut map = HashMap::new(); + let mut max = std::f32::NEG_INFINITY; + for i in -half_width..=half_width { + let x_o = i as f32; + for j in -half_width..=half_width { + let y_o = j as f32; + let x = A * (x_o * C45 - y_o * S45); + let z = B * (x_o * S45 + y_o * C45); + if x.hypot(z) < radius { + let vertex = gen_vertex([x, z]); + if vertex.position.y > max { + max = vertex.position.y; + } + map.insert((i, j), vertex); + } + } + } + Self { + vertices: map, + half_size: width as isize / 2, + } + } + + /// + /// Creates the points required to render the mesh. + /// + pub fn make_buffer_data(&self) -> Vec { + let mut vertices = Vec::new(); + fn middle(p1: &TerrainVertex, p2: &TerrainVertex, p: &TerrainVertex) -> Point3 { + Point3 { + x: (p1.position.x + p2.position.x + p.position.x) / 3.0, + y: (p1.position.y + p2.position.y + p.position.y) / 3.0, + z: (p1.position.z + p2.position.z + p.position.z) / 3.0, + } + } + fn half(p1: &TerrainVertex, p2: &TerrainVertex) -> Point3 { + Point3 { x: (p1.position.x + p2.position.x) / 2.0, y: (p1.position.y + p2.position.y) / 2.0, z: (p1.position.z + p2.position.z) / 2.0 } + } + let mut push_triangle = |p1: &TerrainVertex, p2: &TerrainVertex, p: &TerrainVertex, c: [u8; 4]| { + let m = middle(p1, p2, p); + let ap = half(p1, p); + let bp = half(p2, p); + let p = p.position; + let n1 = calculate_normal(ap, m, p); + let n2 = calculate_normal(m, bp, p); + + vertices + .extend( + [ap, m, p, m, bp, p] + .iter() + .zip(std::iter::repeat::<[f32; 3]>(n1.into()).chain(std::iter::repeat::<[f32; 3]>(n2.into()))) + .zip(std::iter::repeat(c)) + .map(|((pos, normal), colour)| TerrainVertexAttributes { + position: *pos.as_ref(), + normal, + colour, + }) + ); + }; + for i in -self.half_size..=self.half_size { + for j in -self.half_size..=self.half_size { + if let Some(p) = self.vertices.get(&(i, j)) { + surrounding_point_values_iter( + &self.vertices, + i, + j, + |(a, b)| push_triangle(a, b, p, p.colour) + ); + } + } + } + vertices + } +} + +/// +/// Water mesh which contains vertex data for the water mesh. +/// +/// It stores the values multiplied and rounded to the +/// nearest whole number to be more efficient with space when +/// sending large meshes to the GPU. +/// +pub struct HexWaterMesh { + pub vertices: HashMap<(isize, isize), [i16; 2]>, + half_size: isize, +} + +impl HexWaterMesh { + pub fn generate(radius: f32) -> Self { + let width = q_given_r(radius); + let half_width = (width / 2) as isize; + let mut map = HashMap::new(); + + for i in -half_width..=half_width { + let x_o = i as f32; + for j in -half_width..=half_width { + let y_o = j as f32; + let x = A * (x_o * C45 - y_o * S45); + let z = B * (x_o * S45 + y_o * C45); + if x.hypot(z) < radius { + let x = (x * 2.0).round() as i16; + let z = ((z / B) * std::f32::consts::SQRT_2).round() as i16; + map.insert((i, j), [x, z]); + } + } + } + Self { + vertices: map, + half_size: half_width, + } + } + /// + /// Generates the points required to render the mesh. + /// + pub fn generate_points(&self) -> Vec { + let mut vertices = Vec::new(); + + fn calculate_differences(a: [i16; 2], b: [i16; 2], c: [i16; 2]) -> [i8; 4] { + [ + (b[0] - a[0]) as i8, + (b[1] - a[1]) as i8, + (c[0] - a[0]) as i8, + (c[1] - a[1]) as i8 + ] + } + + let mut push_triangle = |a: [i16; 2], b: [i16; 2], c: [i16; 2]| { + let bc = calculate_differences(a, b, c); + let ca = calculate_differences(b, c, a); + let ab = calculate_differences(c, a, b); + + vertices.extend( + [a, b, c] + .iter() + .zip([bc, ca, ab].iter()) + .map(|(&position, &offsets)| WaterVertexAttributes { position, offsets }) + ); + }; + + for i in -self.half_size..=self.half_size { + for j in -self.half_size..=self.half_size { + if (i - j) % 3 == 0 { + if let Some(&p) = self.vertices.get(&(i, j)) { + surrounding_point_values_iter( + &self.vertices, + i, + j, + |(a, b)| push_triangle(*a, *b, p) + ); + } + } + } + } + + vertices + } +} diff --git a/wgpu/examples/water/screenshot.png b/wgpu/examples/water/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..434ebf3f239276b5c018ffa1b81de9f6a71eecab GIT binary patch literal 200271 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

ln*e_uDBMrcfWZb-Bkot=-) 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

)kGZ57dP9Zj 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 Y?(xd_C_+HDCkOoPx3DHu?(wAjKbV#)f&c&j literal 0 HcmV?d00001 diff --git a/wgpu/examples/water/terrain_shader.frag b/wgpu/examples/water/terrain_shader.frag new file mode 100644 index 0000000000..0c903b2195 --- /dev/null +++ b/wgpu/examples/water/terrain_shader.frag @@ -0,0 +1,21 @@ +#version 450 + +layout(early_fragment_tests) in; + +layout(location = 0) in PerVertex { + vec4 v_Colour; + // Comment this out if using user-clipping planes: + float v_ClipDist; +}; + +layout(location = 0) out vec4 outColour; + +void main() { + // Comment this out if using user-clipping planes: + if(v_ClipDist < 0.0) { + discard; + } + + outColour = v_Colour; + outColour.a = 1.0; +} diff --git a/wgpu/examples/water/terrain_shader.frag.spv b/wgpu/examples/water/terrain_shader.frag.spv new file mode 100644 index 0000000000000000000000000000000000000000..33e27fea0519fc910a15468077c1a083d729f95c GIT binary patch literal 804 zcmYk3$w~uJ5JjJf88n(fqj8KaE(LL+B8ZA8WRry;xD~-H0?|kYap`Bd_NNq4@SLPO zSdZ$ex^-U-uhXfWTnJMk&)E)Rse}|r2!)Ux*+%oGxz`^&>>V8L%P5BQh$yENa$y>) zKHj&VOw6J+vkRUfx*PZ*yq!DOCSGKSm^b!atmpl$*ms^I-r0BZ4HP+FAQ|ih zUw0^??(J@;Fuhko#oyt$$3l#`-zQb7SmhhOxkXgW+WJ3ipf6@0cUnX3@`JVd^5D?$ zc`Q0z${S+S<+gghS>LtAC`Q;W+9x_Ex-1$KrSxmk{#8zC*R0=v`?T_Gle}6g%oVFo ziq(4YwM3x_4v(%}i|SE17TW6V$?x$ft}jGyirATsT+&UIqROqPR$q*likmvBN4H)o zZR*mhkGffD{dQ`997ikV>RJtqxL~YGwfwTUL@9-hsQ7AAM?FhQSc&4*LZ!4At0Lld zd#@xeeW}<%#HU@m8_*sr(PBx5ST2;J)fe@`a#T%nVAJZ(%I0|$O`O5h7EVc{VfHrX(8Md%XY(v1IBI` z_W(xE4TA?`26EECV>d0tdYtxhat~r%mX8)O%tnLjb~Iq*#co1GTEM~gVmi{24@79;SUp|}@evh~o?HSQt)k59KoWDokHtiV^ z>vWLY#gqG>WL_BdV144~m&HH_Wn|Z(-FiC`WM&$SJe}SyiAx^jE)lC&GQA`&b@k~> z{|qDkF3Fq+ocPG}6%76Ez~jR?_iCqZ@}uw7&Y8gRN2c#!)PwB-k#ldyvF{g$FEt@& z1CPJi9}}+*Pnmq&%O7u=e8S7lol$iBPKxls4jpmNXeS5xtuF4rv961fzkkb*(HCaH z?C~F#Or7BPBQqmlR>w8*e}2CiH~G5cpFifut*#NtoE{kt`8h3~x^9cm6NkQlTbx1h zU?!gz&pdqzXTBgF8}JUje)@1pL|o#aXWlpu@#!;q;$eG51oke(yBaWjK84zEh-aqI z;YUx#Ma<8va&o>25g5cGKmGj>VoZuB&V*<#od2eH-i=X*A`@#$gg-cb*je9iiRV4o zTu=-B1E1Bu8uFch5vN&{7I9YQkRD)*4KbPXyB<&G-}-Vd;FI!X_VXgkoAdT5k6~wb z^FVy#JkCl6W7+J@i3j6+hRp|ze%U-e6pugl=(#`Y<()ke@it~eb{~%eZgcTOGBLpM U;|xzloB==jfQ;Q=RdZGJ4?^s#TmS$7 literal 0 HcmV?d00001 diff --git a/wgpu/examples/water/water_shader.frag b/wgpu/examples/water/water_shader.frag new file mode 100644 index 0000000000..5ab3787b6b --- /dev/null +++ b/wgpu/examples/water/water_shader.frag @@ -0,0 +1,48 @@ +#version 450 + +const vec3 water_colour = vec3(0.0, 117.0 / 255.0, 242.0 / 255.0); +const float zNear = 10.0; +const float zFar = 400.0; + +layout(set = 0, binding = 0) uniform Uniforms { + mat4x4 _view; + mat4x4 _projection; + vec4 time_size_width; + float viewport_height; +}; + +layout(set = 0, binding = 1) uniform texture2D reflection; +layout(set = 0, binding = 2) uniform texture2D terrain_depth_tex; +layout(set = 0, binding = 3) uniform sampler colour_sampler; + +layout(location = 0) in PerVertex { + vec2 f_WaterScreenPos; + float f_Fresnel; + vec3 f_Light; +} f_In; + +layout(location = 0) out vec4 outColor; + +float to_linear_depth(float depth) { + float z_n = 2.0 * depth - 1.0; + float z_e = 2.0 * zNear * zFar / (zFar + zNear - z_n * (zFar - zNear)); + return z_e; +} + +void main() { + vec3 reflection_colour = texture(sampler2D(reflection, colour_sampler), f_In.f_WaterScreenPos.xy).xyz; + + float pixel_depth = to_linear_depth(gl_FragCoord.z); + float terrain_depth = to_linear_depth(texture(sampler2D(terrain_depth_tex, colour_sampler), gl_FragCoord.xy / vec2(time_size_width.w, viewport_height)).r); + + float dist = terrain_depth - pixel_depth; + float clamped = smoothstep(0.0, 1.0, dist); + + outColor.a = clamped * (1.0 - f_In.f_Fresnel); + + vec3 final_colour = f_In.f_Light + reflection_colour; + + vec3 depth_colour = mix(final_colour, water_colour, smoothstep(1.0, 5.0, dist) * 0.2); + + outColor.xyz = depth_colour; +} diff --git a/wgpu/examples/water/water_shader.frag.spv b/wgpu/examples/water/water_shader.frag.spv new file mode 100644 index 0000000000000000000000000000000000000000..7f22caf2344adcb2b2281adc4ed227217d6cda6a GIT binary patch literal 3520 zcmZ9N+j3Mz6oz+5GU0qaTjB&1Q80>}MIbRk0HX;apr~xd$)03zG81=(fbkThtn$)F z@LBZ63waT|(;LewEx)g4Hw<*@Pp|)9t5^40yZ4^nWqSsaq$gR<-~FUBHYCeXl4Mm< z3iH_bV!WzEUfyjqDr{r04mp3AfOX4VLLCzo~C(((HAOq=X|p+~j!Lg<(K9mPLazne8W zb)%F*52qU>t4xo!TKNnKl9SFKLwd=E4I$vMR(mVC3_RJ%nH^ek^t-PJi zWJTS*$whRBJ-EvJxQ@Q$I((`=-;Vwp7}W+(C7U9?KisF*?e-|o)JKX^O6+m1-mEkp zKkA?x5bjHtKE|Hj0pW;z5ZfB%-iL0#T)*{<@!w}`-Nt&)cL9goJHHC7EBFX=cP_cP zTz{T;d+X>2=lLJ`o}fOd`TndAah-KN*xl>ot{Vn1m)hfXo&4@?+!Ba!)~5Coutv{e zoHhBpb^}M`*5Hs=nPU$&vC4IWcKw^o#+ozs zWdz%?9sd}!x!rFUQQj-HsJqTQ7nsed-#l{fom#Bxoi6S<#zB0h?-oAu#rVm>AJ2Ua z?vNXo2G-gCGi-CkKFF(u7V~9rYxTUh3ST_`Y~k~{#r%H6{&@KCbmX_;fBl)CIl%75 zEdbA8oW2<6cQ;9X9*%qw_TcyNM|tiAe|aSOzYqMk(WBfU`(>{k*7G-t-w1o^z4y1# zyDxY4H>aEXyVA{vpW=S6yZzUn;y1du`}u8-@p8Y(@>A?zX5IsK7uolFRFZ$iXJADfH z9(dQ?!{>ZD*qwO$BtJpCzB6ED;2pnxRf~1Lg*{Sm>l_8$b-oQZM%^{ma29xm2|8wt z=L${T;rU0{-MjxDxCneld@tgeC$RNdmvNVXalRWd=KVsSB*uL%1J|klSZE($yT88J z<15&nTi>Ok4q%T0G0g*lLk~f^9GF7x_QMHb&j`-aoY% ze-m46HP77VQUUhKyODzR;3jbG4QBmu?G(0JyaP3C@0ss?jG4w(kLQ`eHmCXz#To0^ z=F(@bTg;z>D)8C3x7;}Wv&>E4UOqqf^1il!dgOE1-qU-m(f z`Xb+0@YtudaM#5?tixUd)Z=sCfUR!dJd-)qVva4?YB9$)Y_+W*=GczC8R+vpvxXgD V6VPW~&!!gh?!;F6kD9ct|9{+&7oPwC literal 0 HcmV?d00001 diff --git a/wgpu/examples/water/water_shader.vert b/wgpu/examples/water/water_shader.vert new file mode 100644 index 0000000000..5b381571a2 --- /dev/null +++ b/wgpu/examples/water/water_shader.vert @@ -0,0 +1,213 @@ +#version 450 + +layout(set = 0, binding = 0) uniform Uniforms { + mat4x4 view; + mat4x4 projection; + vec4 time_size_width; + float _viewport_height; +}; + +const vec3 light_point = vec3(150.0, 70.0, 0.0); +const vec3 light_colour = vec3(1.0, 250.0 / 255.0, 209.0 / 255.0); + +const float Y_SCL = 0.86602540378443864676372317075294; +const float CURVE_BIAS = -0.1; +const float INV_1_CURVE_BIAS = 1.0 / (1.0 + CURVE_BIAS); + +layout(location = 0) in ivec2 position; +layout(location = 1) in ivec4 offsets; + +layout(location = 0) out PerVertex { + vec2 f_WaterScreenPos; + float f_Fresnel; + vec3 f_Light; +} f_In; + +// +// The following code to calculate simplex 3D +// is from https://github.com/ashima/webgl-noise +// +// Simplex 3D Noise +// by Ian McEwan, Ashima Arts. +// +vec4 permute(vec4 x) { + return mod(((x*34.0)+1.0)*x, 289.0); +} + +vec4 taylorInvSqrt(vec4 r){ + return 1.79284291400159 - 0.85373472095314 * r; +} + +float snoise(vec3 v){ + const vec2 C = vec2(1.0/6.0, 1.0/3.0); + const vec4 D = vec4(0.0, 0.5, 1.0, 2.0); + + // First corner + vec3 i = floor(v + dot(v, C.yyy)); + vec3 x0 = v - i + dot(i, C.xxx); + + // Other corners + vec3 g = step(x0.yzx, x0.xyz); + vec3 l = 1.0 - g; + vec3 i1 = min(g.xyz, l.zxy); + vec3 i2 = max(g.xyz, l.zxy); + + // x0 = x0 - 0.0 + 0.0 * C.xxx; + // x1 = x0 - i1 + 1.0 * C.xxx; + // x2 = x0 - i2 + 2.0 * C.xxx; + // x3 = x0 - 1.0 + 3.0 * C.xxx; + vec3 x1 = x0 - i1 + C.xxx; + vec3 x2 = x0 - i2 + C.yyy;// 2.0*C.x = 1/3 = C.y + vec3 x3 = x0 - D.yyy;// -1.0+3.0*C.x = -0.5 = -D.y + + // Permutations + i = mod(i, 289.0); + vec4 p = permute(permute(permute( + i.z + vec4(0.0, i1.z, i2.z, 1.0)) + + i.y + vec4(0.0, i1.y, i2.y, 1.0)) + + i.x + vec4(0.0, i1.x, i2.x, 1.0)); + + // Gradients: 7x7 points over a square, mapped onto an octahedron. + // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294) + float n_ = 0.142857142857;// 1.0/7.0 + vec3 ns = n_ * D.wyz - D.xzx; + + vec4 j = p - 49.0 * floor(p * ns.z * ns.z);// mod(p,7*7) + + vec4 x_ = floor(j * ns.z); + vec4 y_ = floor(j - 7.0 * x_);// mod(j,N) + + vec4 x = x_ *ns.x + ns.yyyy; + vec4 y = y_ *ns.x + ns.yyyy; + vec4 h = 1.0 - abs(x) - abs(y); + + vec4 b0 = vec4(x.xy, y.xy); + vec4 b1 = vec4(x.zw, y.zw); + + //vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0; + //vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0; + vec4 s0 = floor(b0)*2.0 + 1.0; + vec4 s1 = floor(b1)*2.0 + 1.0; + vec4 sh = -step(h, vec4(0.0)); + + vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy; + vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww; + + vec3 p0 = vec3(a0.xy, h.x); + vec3 p1 = vec3(a0.zw, h.y); + vec3 p2 = vec3(a1.xy, h.z); + vec3 p3 = vec3(a1.zw, h.w); + + //Normalise gradients + vec4 norm = taylorInvSqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + + // Mix final noise value + vec4 m = max(0.6 - vec4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), 0.0); + m = m * m; + return 9.0 * dot(m*m, vec4(dot(p0, x0), dot(p1, x1), + dot(p2, x2), dot(p3, x3))); +} + +// End of 3D simplex code. + +vec3 apply_distortion(vec3 pos) { + vec3 perlin_pos = pos; + + //Do noise transformation to permit for smooth, + //continuous movement. + + float sin = time_size_width.x; + float cos = time_size_width.y; + float size = time_size_width.z; + + // Rotate 90 Z + perlin_pos.xy = perlin_pos.yx; + perlin_pos.x = -perlin_pos.x; + // Move Left Size / 2 + perlin_pos.x -= size; + + float xcos = perlin_pos.x * cos; + float xsin = perlin_pos.x * sin; + float ycos = perlin_pos.y * cos; + float ysin = perlin_pos.y * sin; + float zcos = perlin_pos.z * cos; + float zsin = perlin_pos.z * sin; + + // Rotate Time Y + vec3 perlin_pos_y = vec3(xcos + zsin, perlin_pos.y, -xsin + xcos); + + // Rotate Time Z + vec3 perlin_pos_z = vec3(xcos - ysin, xsin + ycos, perlin_pos.x); + + // Rotate 90 Y + perlin_pos.xz = perlin_pos.zx; + perlin_pos.x = -perlin_pos.x; + + // Rotate Time X + vec3 perlin_pos_x = vec3(perlin_pos.x, ycos - zsin, ysin + zcos); + + // Sample at different places for x/y/z to get random-looking water. + return vec3(pos.x + snoise(perlin_pos_x + 2.0) * 0.4, pos.y + snoise(perlin_pos_y - 2.0) * 1.8, pos.z + snoise(perlin_pos_z) * 0.4); +} + +// Multiply the input by the scale values. +vec3 make_position(vec2 original) { + vec3 interpreted = vec3(original.x * 0.5, 0.0, original.y * Y_SCL); + return apply_distortion(interpreted); +} + +// Create the normal, and apply the curve. Change the Curve Bias above. +vec3 make_normal(vec3 a, vec3 b, vec3 c) { + vec3 norm = normalize(cross(b - c, a - c)); + vec3 center = (a + b + c) / 3.0; + return (normalize(a - center) * CURVE_BIAS + norm) * INV_1_CURVE_BIAS; +} + +// Calculate the fresnel effect. +float calc_fresnel(vec3 view, vec3 normal) { + float refractive = abs(dot(view, normal)); + refractive = pow(refractive, 1.33333333333); + return refractive; +} + +// Calculate the specular lighting. +float calc_specular(vec3 eye, vec3 normal, vec3 light) { + vec3 light_reflected = reflect(light, normal); + float specular = max(dot(eye, light_reflected), 0.0); + specular = pow(specular, 10.0); + return specular; +} + +void main() { + vec2 p_pos = position; + vec3 b_pos = make_position(p_pos + offsets.xy); + vec3 c_pos = make_position(p_pos + offsets.zw); + vec4 a_pos = vec4(make_position(p_pos), 1.0); + vec4 original_pos = vec4(p_pos.x * 0.5, 0.0, p_pos.y * Y_SCL, 1.0); + + vec4 water_pos = a_pos; + + mat4x4 vm = view; + + vec4 transformed_pos = vm * water_pos; + water_pos.xyz = transformed_pos.xyz / transformed_pos.w; + + vec3 normal = make_normal((vm * a_pos).xyz, (vm * vec4(b_pos, 1.0)).xyz, (vm * vec4(c_pos, 1.0)).xyz); + vec3 eye = normalize(-water_pos.xyz); + + vec4 transformed_light = vm * vec4(light_point, 1.0); + + f_In.f_Light = light_colour * calc_specular(eye, normal, normalize(water_pos.xyz - (transformed_light.xyz / transformed_light.w))); + f_In.f_Fresnel = calc_fresnel(eye, normal); + + vec4 projected_pos = projection * transformed_pos; + + gl_Position = projected_pos; + + vec4 gridpos = projection * vm * original_pos; + f_In.f_WaterScreenPos.xy = (0.5 * gridpos.xy / gridpos.w) + 0.5; +} diff --git a/wgpu/examples/water/water_shader.vert.spv b/wgpu/examples/water/water_shader.vert.spv new file mode 100644 index 0000000000000000000000000000000000000000..dc7d6bd9c554a2f89dcb3d82768db6ec96f10622 GIT binary patch literal 17708 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 literal 0 HcmV?d00001