dawn-cmake/test/tint/benchmark/animometer.wgsl
James Price 3b671cb377 wgsl: Separate struct members with commas
Use of semicolons is still supported, but deprecated.

Also updates the parsing methods for structures to better match the
WGSL grammar.

Bug: tint:1475
Change-Id: I7675ba42c13f91080b0ac173c352e0092021f80b
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/84380
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
2022-03-28 14:31:22 +00:00

49 lines
1.3 KiB
WebGPU Shading Language

struct Time {
value : f32,
}
struct Uniforms {
scale : f32,
offsetX : f32,
offsetY : f32,
scalar : f32,
scalarOffset : f32,
}
@binding(0) @group(0) var<uniform> time : Time;
@binding(1) @group(0) var<uniform> uniforms : Uniforms;
struct VertexOutput {
@builtin(position)
Position : vec4<f32>,
@location(0)
v_color : vec4<f32>,
}
@stage(vertex)
fn vert_main(@location(0) position : vec4<f32>, @location(1) color : vec4<f32>) -> VertexOutput {
var fade : f32 = ((uniforms.scalarOffset + ((time.value * uniforms.scalar) / 10.0)) % 1.0);
if ((fade < 0.5)) {
fade = (fade * 2.0);
} else {
fade = ((1.0 - fade) * 2.0);
}
var xpos : f32 = (position.x * uniforms.scale);
var ypos : f32 = (position.y * uniforms.scale);
var angle : f32 = ((3.141590118 * 2.0) * fade);
var xrot : f32 = ((xpos * cos(angle)) - (ypos * sin(angle)));
var yrot : f32 = ((xpos * sin(angle)) + (ypos * cos(angle)));
xpos = (xrot + uniforms.offsetX);
ypos = (yrot + uniforms.offsetY);
var output : VertexOutput;
output.v_color = (vec4<f32>(fade, (1.0 - fade), 0.0, 1.0) + color);
output.Position = vec4<f32>(xpos, ypos, 0.0, 1.0);
return output;
}
@stage(fragment)
fn frag_main(@location(0) v_color : vec4<f32>) -> @location(0) vec4<f32> {
return v_color;
}