shape_maker/assets/shaders/grid.wgsl

34 lines
1.0 KiB
WebGPU Shading Language

@group(1) @binding(0)
var<uniform> grid_width: f32;
@group(1) @binding(1)
var<uniform> grid_size: vec2<f32>;
@group(1) @binding(2)
var<uniform> visible: u32;
let grid_color: vec4<f32> = vec4<f32>(1.0, 1.0, 1.0, 0.3);
let x_color: vec4<f32> = vec4<f32>(1.0, 0.0, 0.0, 1.0);
let y_color :vec4<f32> = vec4<f32>(0.0, 1.0, 0.0, 1.0);
@fragment
fn fragment(
@builtin(position) position: vec4<f32>,
#import bevy_sprite::mesh2d_vertex_output
) -> @location(0) vec4<f32> {
if abs(world_position.y) < grid_width && abs(world_position.x) < grid_width {
return grid_color;
}
else if abs(world_position.y) < grid_width {
return x_color;
}
else if abs(world_position.x) < grid_width {
return y_color;
}
else if visible == u32(0) {
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
}
else if abs(world_position.x) % grid_size.x <= grid_width || abs(world_position.y) % grid_size.y <= grid_width {
return grid_color;
}
else {
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
}
}