From 37f6ad5664e0c9664532dce212bf3078a0e0487d Mon Sep 17 00:00:00 2001 From: cBournhonesque Date: Fri, 24 Jan 2025 11:02:59 -0500 Subject: [PATCH 1/7] wip --- Cargo.toml | 11 ++++ assets/shaders/stochastic_sampling.wgsl | 44 +++++++++++++ examples/shader/stochastic_sampling.rs | 82 +++++++++++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100644 assets/shaders/stochastic_sampling.wgsl create mode 100644 examples/shader/stochastic_sampling.rs diff --git a/Cargo.toml b/Cargo.toml index d491ab2244..4d6340f3b1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2605,6 +2605,17 @@ description = "A custom shader that builds on the standard material" category = "Shaders" wasm = true +[[example]] +name = "stochastic_sampling" +path = "examples/shader/stochastic_sampling.rs" +doc-scrape-examples = true + +[package.metadata.example.stochastic_sampling] +name = "Stochastic Sampling" +description = "A custom shader that avoids repetition artifacts when tiling a texture" +category = "Shaders" +wasm = true + [[example]] name = "shader_prepass" path = "examples/shader/shader_prepass.rs" diff --git a/assets/shaders/stochastic_sampling.wgsl b/assets/shaders/stochastic_sampling.wgsl new file mode 100644 index 0000000000..b087da9b18 --- /dev/null +++ b/assets/shaders/stochastic_sampling.wgsl @@ -0,0 +1,44 @@ +// Import the standard 2d mesh uniforms and set their bind groups +#import bevy_sprite::mesh2d_functions + +// The structure of the vertex buffer is as specified in `specialize()` +struct Vertex { + @builtin(instance_index) instance_index: u32, + @location(0) position: vec3, + @location(1) color: u32, +}; + +struct VertexOutput { + // The vertex shader must set the on-screen position of the vertex + @builtin(position) clip_position: vec4, + // We pass the vertex color to the fragment shader in location 0 + @location(0) color: vec4, +}; + +/// Entry point for the vertex shader +@vertex +fn vertex(vertex: Vertex) -> VertexOutput { + var out: VertexOutput; + // Project the world position of the mesh into screen position + let model = mesh2d_functions::get_world_from_local(vertex.instance_index); + out.clip_position = mesh2d_functions::mesh2d_position_local_to_clip(model, vec4(vertex.position, 1.0)); + // Unpack the `u32` from the vertex buffer into the `vec4` used by the fragment shader + out.color = vec4((vec4(vertex.color) >> vec4(0u, 8u, 16u, 24u)) & vec4(255u)) / 255.0; + return out; +} + +@group(2) @binding(1) var material_color_texture: texture_2d; +@group(2) @binding(2) var material_color_sampler: sampler; + + +// The input of the fragment shader must correspond to the output of the vertex shader for all `location`s +struct FragmentInput { + // The color is interpolated between vertices by default + @location(0) color: vec4, +}; + +/// Entry point for the fragment shader +@fragment +fn fragment(in: FragmentInput) -> @location(0) vec4 { + return in.color; +} \ No newline at end of file diff --git a/examples/shader/stochastic_sampling.rs b/examples/shader/stochastic_sampling.rs new file mode 100644 index 0000000000..a3708d86bd --- /dev/null +++ b/examples/shader/stochastic_sampling.rs @@ -0,0 +1,82 @@ +//! Demonstrates using a custom extension to the `StandardMaterial` to modify the results of the builtin pbr shader. +use bevy::prelude::*; +use bevy::image::{ImageAddressMode, ImageLoaderSettings, ImageSampler, ImageSamplerDescriptor}; +use bevy::sprite::{Material2d, Material2dPlugin}; +use bevy_render::mesh::VertexAttributeValues; +use bevy_render::render_resource::{AsBindGroup, ShaderRef}; + +fn main() { + App::new() + .add_plugins(DefaultPlugins.set(ImagePlugin { + default_sampler: ImageSamplerDescriptor { + address_mode_u: ImageAddressMode::Repeat, + address_mode_v: ImageAddressMode::Repeat, + address_mode_w: ImageAddressMode::Repeat, + ..Default::default() + }, + })) + .add_plugins(Material2dPlugin::::default()) + .add_systems(Startup, setup) + .run(); +} + +fn setup( + mut commands: Commands, + asset_server: Res, + mut materials: ResMut>, + // mut materials: ResMut>, + mut meshes: ResMut>, + mut images: ResMut>, +) { + commands.spawn(Camera2d); + + let texture = asset_server.load("textures/rocks.png"); + commands.spawn(( + Mesh2d(meshes.add(repeating_quad(10.0))), + MeshMaterial2d(materials.add(ColorMaterial { + texture: Some(texture), + ..default() + })), + // MeshMaterial2d(materials.add(CustomMaterial { + // texture: Some(texture), + // })), + Transform::default(), + )); +} + +// This struct defines the data that will be passed to your shader +#[derive(Asset, TypePath, AsBindGroup, Debug, Clone)] +struct CustomMaterial { + #[texture(1)] + #[sampler(2)] + texture: Option>, +} + +/// This example uses a shader source file from the assets subdirectory +const SHADER_ASSET_PATH: &str = "shaders/stochastic_sampling.wgsl"; + +/// The Material trait is very configurable, but comes with sensible defaults for all methods. +/// You only need to implement functions for features that need non-default behavior. See the Material api docs for details! +impl Material2d for CustomMaterial { + fn fragment_shader() -> ShaderRef { + SHADER_ASSET_PATH.into() + } +} + + +/// Creates a quad where the texture repeats n times in both directions. +fn repeating_quad(n: f32) -> Mesh { + let mut mesh: Mesh = Rectangle::from_length(1000.0).into(); + let uv_attribute = mesh.attribute_mut(Mesh::ATTRIBUTE_UV_0).unwrap(); + // The format of the UV coordinates should be Float32x2. + let VertexAttributeValues::Float32x2(uv_attribute) = uv_attribute else { + panic!("Unexpected vertex format, expected Float32x2."); + }; + // The default `Rectangle`'s texture coordinates are in the range of `0..=1`. Values outside + // this range cause the texture to repeat. + for uv_coord in uv_attribute.iter_mut() { + uv_coord[0] *= n; + uv_coord[1] *= n; + } + mesh +} \ No newline at end of file From 09d2d3f4d00d5598e0b6c7fe87c9244e6a236c70 Mon Sep 17 00:00:00 2001 From: cBournhonesque Date: Fri, 24 Jan 2025 18:10:43 -0500 Subject: [PATCH 2/7] working example --- assets/shaders/stochastic_sampling.wgsl | 113 ++++++++++++++++-------- examples/shader/stochastic_sampling.rs | 14 +-- 2 files changed, 82 insertions(+), 45 deletions(-) diff --git a/assets/shaders/stochastic_sampling.wgsl b/assets/shaders/stochastic_sampling.wgsl index b087da9b18..9a2c4440d2 100644 --- a/assets/shaders/stochastic_sampling.wgsl +++ b/assets/shaders/stochastic_sampling.wgsl @@ -1,44 +1,87 @@ -// Import the standard 2d mesh uniforms and set their bind groups +#import bevy_sprite::mesh2d_vertex_output::VertexOutput +#import bevy_sprite::mesh2d_view_bindings::globals #import bevy_sprite::mesh2d_functions -// The structure of the vertex buffer is as specified in `specialize()` -struct Vertex { - @builtin(instance_index) instance_index: u32, - @location(0) position: vec3, - @location(1) color: u32, -}; - -struct VertexOutput { - // The vertex shader must set the on-screen position of the vertex - @builtin(position) clip_position: vec4, - // We pass the vertex color to the fragment shader in location 0 - @location(0) color: vec4, -}; - -/// Entry point for the vertex shader -@vertex -fn vertex(vertex: Vertex) -> VertexOutput { - var out: VertexOutput; - // Project the world position of the mesh into screen position - let model = mesh2d_functions::get_world_from_local(vertex.instance_index); - out.clip_position = mesh2d_functions::mesh2d_position_local_to_clip(model, vec4(vertex.position, 1.0)); - // Unpack the `u32` from the vertex buffer into the `vec4` used by the fragment shader - out.color = vec4((vec4(vertex.color) >> vec4(0u, 8u, 16u, 24u)) & vec4(255u)) / 255.0; - return out; +fn permute_3_(x: vec3) -> vec3 { + return (((x * 34.) + 1.) * x) % vec3(289.); } -@group(2) @binding(1) var material_color_texture: texture_2d; -@group(2) @binding(2) var material_color_sampler: sampler; +// Noise implementation from https://github.com/johanhelsing/noisy_bevy/blob/v0.8.0/assets/noisy_bevy.wgsl +fn simplex_noise_2d(v: vec2) -> f32 { + let C = vec4( + 0.211324865405187, // (3.0 - sqrt(3.0)) / 6.0 + 0.366025403784439, // 0.5 * (sqrt(3.0) - 1.0) + -0.577350269189626, // -1.0 + 2.0 * C.x + 0.024390243902439 // 1.0 / 41.0 + ); + // first corner + var i = floor(v + dot(v, C.yy)); + let x0 = v - i + dot(i, C.xx); -// The input of the fragment shader must correspond to the output of the vertex shader for all `location`s -struct FragmentInput { - // The color is interpolated between vertices by default - @location(0) color: vec4, -}; + // other corners + var i1 = select(vec2(0., 1.), vec2(1., 0.), x0.x > x0.y); + var x12 = x0.xyxy + C.xxzz - vec4(i1, 0., 0.); + + // permutations + i = i % vec2(289.); + + let p = permute_3_(permute_3_(i.y + vec3(0., i1.y, 1.)) + i.x + vec3(0., i1.x, 1.)); + var m = max(0.5 - vec3(dot(x0, x0), dot(x12.xy, x12.xy), dot(x12.zw, x12.zw)), vec3(0.)); + m *= m; + m *= m; + + // gradients: 41 points uniformly over a line, mapped onto a diamond + // the ring size, 17*17 = 289, is close to a multiple of 41 (41*7 = 287) + let x = 2. * fract(p * C.www) - 1.; + let h = abs(x) - 0.5; + let ox = floor(x + 0.5); + let a0 = x - ox; + + // normalize gradients implicitly by scaling m + // approximation of: m *= inversesqrt(a0 * a0 + h * h); + m = m * (1.79284291400159 - 0.85373472095314 * (a0 * a0 + h * h)); + + // compute final noise value at P + let g = vec3(a0.x * x0.x + h.x * x0.y, a0.yz * x12.xz + h.yz * x12.yw); + return 130. * dot(m, g); +} + +fn sum(v: vec4) -> f32 { + return v.x+v.y+v.z; +} + +// Stochastic sampling method from https://iquilezles.org/articles/texturerepetition/ +fn stochastic_sampling(uv: vec2, dx: vec2, dy: vec2, s: f32) -> vec4 { + + // sample variation pattern + let frequency_scale = 5.0; + let amplitude_scale = 0.3; + let k = simplex_noise_2d(uv.xy / frequency_scale) * amplitude_scale; + + // compute index from 0-7 + let index = k * 8.0; + let i = floor(index); + let f = fract(index); + + // offsets for the different virtual patterns from 0 to 7 + let offa = sin(vec2(3.0,7.0)*(i+0.0)); // can replace with any other hash + let offb = sin(vec2(3.0,7.0)*(i+1.0)); // can replace with any other hash + + // sample the two closest virtual pattersn + let cola = textureSampleGrad(texture, texture_sampler, uv + s * offa, dx, dy); + let colb = textureSampleGrad(texture, texture_sampler, uv + s * offb, dx, dy); + + // interpolate between the two virtual patterns + return mix(cola, colb, smoothstep(0.2,0.8,f - 0.1*sum(cola-colb)) ); +} + +@group(2) @binding(1) var texture: texture_2d; +@group(2) @binding(2) var texture_sampler: sampler; -/// Entry point for the fragment shader @fragment -fn fragment(in: FragmentInput) -> @location(0) vec4 { - return in.color; +fn fragment(in: VertexOutput) -> @location(0) vec4 { + let speed = 0.5; + let s = smoothstep(0.4, 0.6, sin(globals.time * speed)); + return stochastic_sampling(in.uv, dpdx(in.uv), dpdy(in.uv), s); } \ No newline at end of file diff --git a/examples/shader/stochastic_sampling.rs b/examples/shader/stochastic_sampling.rs index a3708d86bd..4586d34c03 100644 --- a/examples/shader/stochastic_sampling.rs +++ b/examples/shader/stochastic_sampling.rs @@ -1,4 +1,5 @@ -//! Demonstrates using a custom extension to the `StandardMaterial` to modify the results of the builtin pbr shader. +//! Demonstrates using a custom extension to the `StandardMaterial` to create a repeating texture that avoids seams +//! by using stochastic sampling. This example uses a custom shader to achieve the effect. use bevy::prelude::*; use bevy::image::{ImageAddressMode, ImageLoaderSettings, ImageSampler, ImageSamplerDescriptor}; use bevy::sprite::{Material2d, Material2dPlugin}; @@ -23,23 +24,16 @@ fn main() { fn setup( mut commands: Commands, asset_server: Res, - mut materials: ResMut>, - // mut materials: ResMut>, + mut materials: ResMut>, mut meshes: ResMut>, - mut images: ResMut>, ) { commands.spawn(Camera2d); - let texture = asset_server.load("textures/rocks.png"); commands.spawn(( Mesh2d(meshes.add(repeating_quad(10.0))), - MeshMaterial2d(materials.add(ColorMaterial { + MeshMaterial2d(materials.add(CustomMaterial { texture: Some(texture), - ..default() })), - // MeshMaterial2d(materials.add(CustomMaterial { - // texture: Some(texture), - // })), Transform::default(), )); } From e8f2dc4e7674468f7d8c68331a1779128c372c65 Mon Sep 17 00:00:00 2001 From: cBournhonesque Date: Fri, 24 Jan 2025 18:17:50 -0500 Subject: [PATCH 3/7] add texture --- assets/textures/rocks.png | Bin 0 -> 101154 bytes examples/shader/stochastic_sampling.rs | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 assets/textures/rocks.png diff --git a/assets/textures/rocks.png b/assets/textures/rocks.png new file mode 100644 index 0000000000000000000000000000000000000000..93107241d81b079ef5647ec8c00c5fefbfae66f7 GIT binary patch literal 101154 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 UK;Ac5fdBvi07*qoM6N<$g6_L)H2?qr literal 0 HcmV?d00001 diff --git a/examples/shader/stochastic_sampling.rs b/examples/shader/stochastic_sampling.rs index 4586d34c03..17f2571cff 100644 --- a/examples/shader/stochastic_sampling.rs +++ b/examples/shader/stochastic_sampling.rs @@ -1,7 +1,7 @@ //! Demonstrates using a custom extension to the `StandardMaterial` to create a repeating texture that avoids seams //! by using stochastic sampling. This example uses a custom shader to achieve the effect. use bevy::prelude::*; -use bevy::image::{ImageAddressMode, ImageLoaderSettings, ImageSampler, ImageSamplerDescriptor}; +use bevy::image::{ImageAddressMode, ImageSamplerDescriptor}; use bevy::sprite::{Material2d, Material2dPlugin}; use bevy_render::mesh::VertexAttributeValues; use bevy_render::render_resource::{AsBindGroup, ShaderRef}; From ea5c87b955c731fc80e284af1306ac2a14fef900 Mon Sep 17 00:00:00 2001 From: cBournhonesque Date: Fri, 24 Jan 2025 20:19:56 -0500 Subject: [PATCH 4/7] update readme --- examples/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/README.md b/examples/README.md index c7a5d6b86d..5013458e98 100644 --- a/examples/README.md +++ b/examples/README.md @@ -441,6 +441,7 @@ Example | Description [Post Processing - Custom Render Pass](../examples/shader/custom_post_processing.rs) | A custom post processing effect, using a custom render pass that runs after the main pass [Shader Defs](../examples/shader/shader_defs.rs) | A shader that uses "shaders defs" (a bevy tool to selectively toggle parts of a shader) [Specialized Mesh Pipeline](../examples/shader/specialized_mesh_pipeline.rs) | Demonstrates how to write a specialized mesh pipeline +[Stochastic Sampling](../examples/shader/stochastic_sampling.rs) | A custom shader that avoids repetition artifacts when tiling a texture [Storage Buffer](../examples/shader/storage_buffer.rs) | A shader that shows how to bind a storage buffer using a custom material. [Texture Binding Array (Bindless Textures)](../examples/shader/texture_binding_array.rs) | A shader that shows how to bind and sample multiple textures as a binding array (a.k.a. bindless textures). From 98050b2cdc9e6a6e979f6c4d2d07f1f3515162b3 Mon Sep 17 00:00:00 2001 From: cBournhonesque Date: Fri, 24 Jan 2025 20:20:05 -0500 Subject: [PATCH 5/7] cargo fmt --- examples/shader/stochastic_sampling.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/examples/shader/stochastic_sampling.rs b/examples/shader/stochastic_sampling.rs index 17f2571cff..475fdbdb95 100644 --- a/examples/shader/stochastic_sampling.rs +++ b/examples/shader/stochastic_sampling.rs @@ -1,7 +1,7 @@ //! Demonstrates using a custom extension to the `StandardMaterial` to create a repeating texture that avoids seams //! by using stochastic sampling. This example uses a custom shader to achieve the effect. -use bevy::prelude::*; use bevy::image::{ImageAddressMode, ImageSamplerDescriptor}; +use bevy::prelude::*; use bevy::sprite::{Material2d, Material2dPlugin}; use bevy_render::mesh::VertexAttributeValues; use bevy_render::render_resource::{AsBindGroup, ShaderRef}; @@ -57,7 +57,6 @@ impl Material2d for CustomMaterial { } } - /// Creates a quad where the texture repeats n times in both directions. fn repeating_quad(n: f32) -> Mesh { let mut mesh: Mesh = Rectangle::from_length(1000.0).into(); @@ -73,4 +72,4 @@ fn repeating_quad(n: f32) -> Mesh { uv_coord[1] *= n; } mesh -} \ No newline at end of file +} From 5af442270eb2346246b31c4ff9b01d88e24bd296 Mon Sep 17 00:00:00 2001 From: cBournhonesque Date: Fri, 24 Jan 2025 20:40:13 -0500 Subject: [PATCH 6/7] fix ci --- assets/shaders/stochastic_sampling.wgsl | 2 +- examples/shader/stochastic_sampling.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/assets/shaders/stochastic_sampling.wgsl b/assets/shaders/stochastic_sampling.wgsl index 9a2c4440d2..188372abe0 100644 --- a/assets/shaders/stochastic_sampling.wgsl +++ b/assets/shaders/stochastic_sampling.wgsl @@ -68,7 +68,7 @@ fn stochastic_sampling(uv: vec2, dx: vec2, dy: vec2, s: f32) -> v let offa = sin(vec2(3.0,7.0)*(i+0.0)); // can replace with any other hash let offb = sin(vec2(3.0,7.0)*(i+1.0)); // can replace with any other hash - // sample the two closest virtual pattersn + // sample the two closest virtual patterns let cola = textureSampleGrad(texture, texture_sampler, uv + s * offa, dx, dy); let colb = textureSampleGrad(texture, texture_sampler, uv + s * offb, dx, dy); diff --git a/examples/shader/stochastic_sampling.rs b/examples/shader/stochastic_sampling.rs index 475fdbdb95..15f665bd9c 100644 --- a/examples/shader/stochastic_sampling.rs +++ b/examples/shader/stochastic_sampling.rs @@ -3,8 +3,8 @@ use bevy::image::{ImageAddressMode, ImageSamplerDescriptor}; use bevy::prelude::*; use bevy::sprite::{Material2d, Material2dPlugin}; -use bevy_render::mesh::VertexAttributeValues; -use bevy_render::render_resource::{AsBindGroup, ShaderRef}; +use bevy::render::mesh::VertexAttributeValues; +use bevy::render::render_resource::{AsBindGroup, ShaderRef}; fn main() { App::new() From 7996d5126e77117b652277c3c8350aa173c6c137 Mon Sep 17 00:00:00 2001 From: cBournhonesque Date: Fri, 24 Jan 2025 20:43:57 -0500 Subject: [PATCH 7/7] ci --- examples/shader/stochastic_sampling.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/shader/stochastic_sampling.rs b/examples/shader/stochastic_sampling.rs index 15f665bd9c..0cecade5a0 100644 --- a/examples/shader/stochastic_sampling.rs +++ b/examples/shader/stochastic_sampling.rs @@ -2,9 +2,9 @@ //! by using stochastic sampling. This example uses a custom shader to achieve the effect. use bevy::image::{ImageAddressMode, ImageSamplerDescriptor}; use bevy::prelude::*; -use bevy::sprite::{Material2d, Material2dPlugin}; use bevy::render::mesh::VertexAttributeValues; use bevy::render::render_resource::{AsBindGroup, ShaderRef}; +use bevy::sprite::{Material2d, Material2dPlugin}; fn main() { App::new()