1#import bevy_sprite::mesh2d_view_bindings::globals2#import bevy_sprite::mesh2d_functions::{3 get_world_from_local,4 mesh2d_position_local_to_clip,5}6#import noisy_bevy::fbm_simplex_2d_warp_seeded8struct NoiseMaterial {9 num_warps: i3210}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@vertex26fn vertex(vertex: VertexInput) -> VertexOutput {27 var out: VertexOutput;28 let model = get_world_from_local(vertex.instance_index);29 out.clip_position = mesh2d_position_local_to_clip(model, vec4<f32>(vertex.position, 1.0));30 out.object_position = vertex.position.xy;31 return out;32}34const frequency_scale = 0.005;35const octaves = 10;36const lacunarity = 2.9;37const gain = 0.4;38const seed = 324.0;39const scale = vec2(0.4, 0.4);40const faloff = 0.1;42@fragment43fn fragment(44 in: VertexOutput,45) -> @location(0) vec4<f32> {46 var position = in.object_position * frequency_scale;47 position.x += globals.time * 0.001;49 let warp_result = fbm_simplex_2d_warp_seeded(50 position,51 octaves,52 lacunarity,53 gain,54 seed,55 material.num_warps,56 scale,57 faloff58 );60 // Palette 1 - frost61 // let base_color_a = vec4(74./255., 98./255., 138./255., 1.);62 // let base_color_b = vec4(185./255., 229./255., 232./255., 1.);63 // let base_color_c = vec4(122./255., 178./255., 211./255., 1.);64 // let base_color_d = vec4(223./255., 242./255., 235./255., 1.);66 // Palette 2 - bath bomb67 let base_color_a = vec4(9./255., 18./255., 44./255., 1.);68 let base_color_b = vec4(135./255., 35./255., 65./255., 1.);69 let base_color_c = vec4(190./255., 49./255., 68./255., 1.);70 let base_color_d = vec4(225./255., 117./255., 100./255., 1.);72 // Palette 3 - toxic73 // let base_color_a = vec4(26./255., 26./255., 25./255., 1.);74 // let base_color_b = vec4(49./255., 81./255., 30./255., 1.);75 // let base_color_c = vec4(133./255., 159./255., 61./255., 1.);76 // let base_color_d = vec4(246./255., 252./255., 223./255., 1.);78 let color1 = mix(79 base_color_a,80 base_color_d,81 smoothstep(0.0, 1.0, warp_result.noise_value)82 );84 let color2 = mix(85 color1,86 base_color_b,87 smoothstep(0.0, 3.0, length(warp_result.positions[0]))88 );90 let color3 = mix(91 color2,92 base_color_c,93 warp_result.positions[1].y94 );96 return color3;97}