Search across packages, versions, files, declarations, and comments. Use multiple terms to narrow results (AND), and add @vertex, @fragment, or @compute to filter by shader stage.
1#import bevy_sprite::mesh2d_functions::{
2 get_world_from_local,
3 mesh2d_position_local_to_clip,
4}
5#import noisy_bevy::worley_2d
7struct NoiseMaterial {
8 frequency_scale: f32,
9 amplitude_scale: f32,
12@group(2) @binding(0) var<uniform> material: NoiseMaterial;
14struct VertexInput {
15 @builtin(instance_index) instance_index: u32,
16 @location(0) position: vec3<f32>,
17 @location(1) blend_color: vec4<f32>,
18};
20struct VertexOutput {
21 @builtin(position) clip_position: vec4<f32>,
22 @location(0) object_position: vec2<f32>,
23};
25@vertex
26fn vertex(vertex: VertexInput) -> VertexOutput {
27 var out: VertexOutput;
28 // Project the world position of the mesh to screen position
29 let model = get_world_from_local(vertex.instance_index);
30 out.clip_position = mesh2d_position_local_to_clip(model, vec4<f32>(vertex.position, 1.0));
31 out.object_position = vertex.position.xy;
32 return out;
35@fragment
36fn fragment(
37 in: VertexOutput,
38) -> @location(0) vec4<f32> {
39 let position = in.object_position * material.frequency_scale;
40 let jitter = 1.0;
41 let worley = worley_2d(position, jitter) * material.amplitude_scale;
43 let distance = worley.x;
45 return vec4(distance, distance, distance, 1.);
Contents