examples/gkurve: explain frag_bary coordinates intent
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
eae2a090c6
commit
2b718c6de1
1 changed files with 15 additions and 3 deletions
|
|
@ -6,7 +6,7 @@ struct VertexUniform {
|
||||||
struct VertexOut {
|
struct VertexOut {
|
||||||
@builtin(position) position_clip: vec4<f32>,
|
@builtin(position) position_clip: vec4<f32>,
|
||||||
@location(0) frag_uv: vec2<f32>,
|
@location(0) frag_uv: vec2<f32>,
|
||||||
@interpolate(linear) @location(1) frag_bary: vec3<f32>,
|
@interpolate(linear) @location(1) frag_bary: vec2<f32>,
|
||||||
@interpolate(flat) @location(2) triangle_index: u32,
|
@interpolate(flat) @location(2) triangle_index: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -18,10 +18,22 @@ struct VertexOut {
|
||||||
var output : VertexOut;
|
var output : VertexOut;
|
||||||
output.position_clip = ubo.matrix * position;
|
output.position_clip = ubo.matrix * position;
|
||||||
output.frag_uv = uv;
|
output.frag_uv = uv;
|
||||||
output.frag_bary = vec3<f32>(
|
|
||||||
|
// Generates [0, 0], [0.5, 0.0], [1.0, 1.0]
|
||||||
|
//
|
||||||
|
// Equal to:
|
||||||
|
//
|
||||||
|
// if ((vertex_index+1u) % 3u == 0u) {
|
||||||
|
// output.frag_bary = vec2<f32>(0.0, 0.0);
|
||||||
|
// } else if ((vertex_index+1u) % 3u == 1u) {
|
||||||
|
// output.frag_bary = vec2<f32>(0.5, 0.0);
|
||||||
|
// } else {
|
||||||
|
// output.frag_bary = vec2<f32>(1.0, 1.0);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
output.frag_bary = vec2<f32>(
|
||||||
f32(((vertex_index+2u) % 3u * 2u) % 3u),
|
f32(((vertex_index+2u) % 3u * 2u) % 3u),
|
||||||
f32(((vertex_index+2u) % 3u * 2u) & 2u) * 2.0,
|
f32(((vertex_index+2u) % 3u * 2u) & 2u) * 2.0,
|
||||||
0.0,
|
|
||||||
);
|
);
|
||||||
output.triangle_index = vertex_index / 3u;
|
output.triangle_index = vertex_index / 3u;
|
||||||
return output;
|
return output;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue