shaders are cool asf
(ive been learning some wgsl lately)
source code below line
`
// wgsl code
#import bevy_sprite::mesh2d_view_bindings::globals
#import shadplay::shader_utils::common::{NEG_HALF_PI, shader_toy_default, rotate2D, TWO_PI}
#import bevy_render::view::View
#import bevy_pbr::forward_io::VertexOutput;
@group(0) @binding(0) var view: View;
const PI: f32 = 3.14159265359; const TWO_PI = 6.2848; const SPEED:f32 = 1.5;
@fragment fn fragment(in: VertexOutput) -> @location(0) vec4 { // ensure our uv coords match shadertoy/the-lil-book-of-shaders let uvo = vec2(-in.uv.x,in.uv.y); let time = globals.time * SPEED; var uv = ((in.uv * 2.0) - 1.0); let resolution = view.viewport.zw; uv.x *= resolution.x / resolution.y; uv *= rotate2D(NEG_HALF_PI); let uvc = uv; let uvr = uvc * rotate2D(time); var color = 0.5 + 0.5 * cos(time + uv.xyx + vec3(0.0, 2.0, 4.0)); uv = sin(uvr); let flow = (sin(time*1.5-uvc.x-uvc.y)+1.2)/10.; color -= step(flow,abs(sdCircle(uv,0.9))); //color -= step(flow,0.1); //color = uvr.xyx; return vec4f(color, 1.0); }
fn sdCircle(p: vec2f, r: f32) -> f32 { return length(p) - r; }
`













