34 lines
1 KiB
WebGPU Shading Language
34 lines
1 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);
|
||
|
}
|
||
|
}
|