dawn-cmake/test/benchmark/particles.wgsl.expected.glsl
Ben Clayton 73ced33dfb test/benchmark: Add more shaders to the corpus
Kindly donated by Brandon Jones and Austin Eng.
Tint has been used to convert all the deprecated attributes to the new style. In doing so, comments have been stripped. These are not massively important for the benchmarking.

Bindings have also been adjusted to be sequential and unique so that the MSL backend doesn't have to deal with binding remapping.

Existing benchmark files that used an underscore '_' have been renamed to use a dash '-' instead, to match the new files.

Change-Id: If5fb507b981f107ed570f6eedb55b232448f67aa
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/77443
Reviewed-by: Brandon Jones <bajones@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-01-21 22:38:16 +00:00

516 lines
11 KiB
GLSL

SKIP: FAILED
#version 310 es
precision mediump float;
struct RenderParams {
mat4 modelViewProjectionMatrix;
vec3 right;
vec3 up;
};
layout (binding = 0) uniform RenderParams_1 {
mat4 modelViewProjectionMatrix;
vec3 right;
vec3 up;
} render_params;
struct VertexInput {
vec3 position;
vec4 color;
vec2 quad_pos;
};
struct VertexOutput {
vec4 position;
vec4 color;
vec2 quad_pos;
};
struct tint_symbol_4 {
vec3 position;
vec4 color;
vec2 quad_pos;
};
struct tint_symbol_5 {
vec4 color;
vec2 quad_pos;
vec4 position;
};
VertexOutput vs_main_inner(VertexInput tint_symbol) {
vec3 quad_pos = (mat2x3(render_params.right, render_params.up) * tint_symbol.quad_pos);
vec3 position = (tint_symbol.position + (quad_pos * 0.01f));
VertexOutput tint_symbol_1 = VertexOutput(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), vec2(0.0f, 0.0f));
tint_symbol_1.position = (render_params.modelViewProjectionMatrix * vec4(position, 1.0f));
tint_symbol_1.color = tint_symbol.color;
tint_symbol_1.quad_pos = tint_symbol.quad_pos;
return tint_symbol_1;
}
struct tint_symbol_7 {
vec4 color;
vec2 quad_pos;
vec4 position;
};
struct tint_symbol_8 {
vec4 value;
};
struct SimulationParams {
float deltaTime;
vec4 seed;
};
struct Particle {
vec3 position;
float lifetime;
vec4 color;
vec3 velocity;
};
struct tint_symbol_10 {
uvec3 GlobalInvocationID;
};
struct UBO {
uint width;
};
struct tint_symbol_12 {
uvec3 coord;
};
struct tint_symbol_14 {
uvec3 coord;
};
tint_symbol_5 vs_main(tint_symbol_4 tint_symbol_3) {
VertexInput tint_symbol_15 = VertexInput(tint_symbol_3.position, tint_symbol_3.color, tint_symbol_3.quad_pos);
VertexOutput inner_result = vs_main_inner(tint_symbol_15);
tint_symbol_5 wrapper_result = tint_symbol_5(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec2(0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
wrapper_result.position = inner_result.position;
wrapper_result.color = inner_result.color;
wrapper_result.quad_pos = inner_result.quad_pos;
return wrapper_result;
}
in vec3 position;
in vec4 color;
in vec2 quad_pos;
out vec4 color;
out vec2 quad_pos;
void main() {
tint_symbol_4 inputs;
inputs.position = position;
inputs.color = color;
inputs.quad_pos = quad_pos;
tint_symbol_5 outputs;
outputs = vs_main(inputs);
color = outputs.color;
quad_pos = outputs.quad_pos;
gl_Position = outputs.position;
gl_Position.y = -gl_Position.y;
}
Error parsing GLSL shader:
ERROR: 0:90: 'color' : redefinition
ERROR: 1 compilation errors. No code generated.
#version 310 es
precision mediump float;
struct RenderParams {
mat4 modelViewProjectionMatrix;
vec3 right;
vec3 up;
};
struct VertexInput {
vec3 position;
vec4 color;
vec2 quad_pos;
};
struct VertexOutput {
vec4 position;
vec4 color;
vec2 quad_pos;
};
struct tint_symbol_4 {
vec3 position;
vec4 color;
vec2 quad_pos;
};
struct tint_symbol_5 {
vec4 color;
vec2 quad_pos;
vec4 position;
};
struct tint_symbol_7 {
vec4 color;
vec2 quad_pos;
vec4 position;
};
struct tint_symbol_8 {
vec4 value;
};
vec4 fs_main_inner(VertexOutput tint_symbol) {
vec4 color = tint_symbol.color;
color.a = (color.a * max((1.0f - length(tint_symbol.quad_pos)), 0.0f));
return color;
}
struct SimulationParams {
float deltaTime;
vec4 seed;
};
struct Particle {
vec3 position;
float lifetime;
vec4 color;
vec3 velocity;
};
struct tint_symbol_10 {
uvec3 GlobalInvocationID;
};
struct UBO {
uint width;
};
struct tint_symbol_12 {
uvec3 coord;
};
struct tint_symbol_14 {
uvec3 coord;
};
tint_symbol_8 fs_main(tint_symbol_7 tint_symbol_6) {
VertexOutput tint_symbol_15 = VertexOutput(tint_symbol_6.position, tint_symbol_6.color, tint_symbol_6.quad_pos);
vec4 inner_result_1 = fs_main_inner(tint_symbol_15);
tint_symbol_8 wrapper_result_1 = tint_symbol_8(vec4(0.0f, 0.0f, 0.0f, 0.0f));
wrapper_result_1.value = inner_result_1;
return wrapper_result_1;
}
in vec4 color;
in vec2 quad_pos;
out vec4 value;
void main() {
tint_symbol_7 inputs;
inputs.color = color;
inputs.quad_pos = quad_pos;
inputs.position = gl_FragCoord;
tint_symbol_8 outputs;
outputs = fs_main(inputs);
value = outputs.value;
}
#version 310 es
precision mediump float;
vec2 rand_seed = vec2(0.0f, 0.0f);
float rand() {
rand_seed.x = frac((cos(dot(rand_seed, vec2(23.140779495f, 232.616897583f))) * 136.816802979f));
rand_seed.y = frac((cos(dot(rand_seed, vec2(54.478565216f, 345.841522217f))) * 534.764526367f));
return rand_seed.y;
}
struct RenderParams {
mat4 modelViewProjectionMatrix;
vec3 right;
vec3 up;
};
struct VertexInput {
vec3 position;
vec4 color;
vec2 quad_pos;
};
struct VertexOutput {
vec4 position;
vec4 color;
vec2 quad_pos;
};
struct tint_symbol_4 {
vec3 position;
vec4 color;
vec2 quad_pos;
};
struct tint_symbol_5 {
vec4 color;
vec2 quad_pos;
vec4 position;
};
struct tint_symbol_7 {
vec4 color;
vec2 quad_pos;
vec4 position;
};
struct tint_symbol_8 {
vec4 value;
};
struct SimulationParams {
float deltaTime;
vec4 seed;
};
struct Particle {
vec3 position;
float lifetime;
vec4 color;
vec3 velocity;
};
layout (binding = 0) uniform SimulationParams_1 {
float deltaTime;
vec4 seed;
} sim_params;
layout (binding = 1) buffer Particles_1 {
Particle particles[];
} data;
uniform highp sampler2D tint_symbol_2;
struct tint_symbol_10 {
uvec3 GlobalInvocationID;
};
void simulate_inner(uvec3 GlobalInvocationID) {
rand_seed = ((sim_params.seed.xy + vec2(GlobalInvocationID.xy)) * sim_params.seed.zw);
uint idx = GlobalInvocationID.x;
Particle particle = data.particles[idx];
particle.velocity.z = (particle.velocity.z - (sim_params.deltaTime * 0.5f));
particle.position = (particle.position + (sim_params.deltaTime * particle.velocity));
particle.lifetime = (particle.lifetime - sim_params.deltaTime);
particle.color.a = smoothstep(0.0f, 0.5f, particle.lifetime);
if ((particle.lifetime < 0.0f)) {
ivec2 coord = ivec2(0, 0);
{
for(int level = (textureQueryLevels(tint_symbol_2); - 1); (level > 0); level = (level - 1)) {
vec4 probabilites = texelFetch(tint_symbol_2, coord, level);
vec4 value = vec4(rand());
bvec4 mask = (greaterThanEqual(value, vec4(0.0f, probabilites.xyz)) & lessThan(value, probabilites));
coord = (coord * 2);
coord.x = (coord.x + (any(mask.yw) ? 1 : 0));
coord.y = (coord.y + (any(mask.zw) ? 1 : 0));
}
}
vec2 uv = (vec2(coord) / vec2(textureSize(tint_symbol_2, 0)));
particle.position = vec3((((uv - 0.5f) * 3.0f) * vec2(1.0f, -1.0f)), 0.0f);
particle.color = texelFetch(tint_symbol_2, coord, 0);
particle.velocity.x = ((rand() - 0.5f) * 0.100000001f);
particle.velocity.y = ((rand() - 0.5f) * 0.100000001f);
particle.velocity.z = (rand() * 0.300000012f);
particle.lifetime = (0.5f + (rand() * 2.0f));
}
data.particles[idx] = particle;
}
struct UBO {
uint width;
};
struct tint_symbol_12 {
uvec3 coord;
};
struct tint_symbol_14 {
uvec3 coord;
};
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
void simulate(tint_symbol_10 tint_symbol_9) {
simulate_inner(tint_symbol_9.GlobalInvocationID);
return;
}
void main() {
tint_symbol_10 inputs;
inputs.GlobalInvocationID = gl_GlobalInvocationID;
simulate(inputs);
}
Error parsing GLSL shader:
ERROR: 0:7: 'frac' : no matching overloaded function found
ERROR: 0:7: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
struct RenderParams {
mat4 modelViewProjectionMatrix;
vec3 right;
vec3 up;
};
struct VertexInput {
vec3 position;
vec4 color;
vec2 quad_pos;
};
struct VertexOutput {
vec4 position;
vec4 color;
vec2 quad_pos;
};
struct tint_symbol_4 {
vec3 position;
vec4 color;
vec2 quad_pos;
};
struct tint_symbol_5 {
vec4 color;
vec2 quad_pos;
vec4 position;
};
struct tint_symbol_7 {
vec4 color;
vec2 quad_pos;
vec4 position;
};
struct tint_symbol_8 {
vec4 value;
};
struct SimulationParams {
float deltaTime;
vec4 seed;
};
struct Particle {
vec3 position;
float lifetime;
vec4 color;
vec3 velocity;
};
struct tint_symbol_10 {
uvec3 GlobalInvocationID;
};
struct UBO {
uint width;
};
layout (binding = 3) uniform UBO_1 {
uint width;
} ubo;
layout (binding = 4) buffer Buffer_1 {
float weights[];
} buf_in;
layout (binding = 5) buffer Buffer_2 {
float weights[];
} buf_out;
uniform highp sampler2D tex_in;
struct tint_symbol_12 {
uvec3 coord;
};
void import_level_inner(uvec3 coord) {
uint offset = (coord.x + (coord.y * ubo.width));
buf_out.weights[offset] = texelFetch(tex_in, ivec2(coord.xy), 0).w;
}
struct tint_symbol_14 {
uvec3 coord;
};
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
void import_level(tint_symbol_12 tint_symbol_11) {
import_level_inner(tint_symbol_11.coord);
return;
}
void main() {
tint_symbol_12 inputs;
inputs.coord = gl_GlobalInvocationID;
import_level(inputs);
}
#version 310 es
precision mediump float;
struct RenderParams {
mat4 modelViewProjectionMatrix;
vec3 right;
vec3 up;
};
struct VertexInput {
vec3 position;
vec4 color;
vec2 quad_pos;
};
struct VertexOutput {
vec4 position;
vec4 color;
vec2 quad_pos;
};
struct tint_symbol_4 {
vec3 position;
vec4 color;
vec2 quad_pos;
};
struct tint_symbol_5 {
vec4 color;
vec2 quad_pos;
vec4 position;
};
struct tint_symbol_7 {
vec4 color;
vec2 quad_pos;
vec4 position;
};
struct tint_symbol_8 {
vec4 value;
};
struct SimulationParams {
float deltaTime;
vec4 seed;
};
struct Particle {
vec3 position;
float lifetime;
vec4 color;
vec3 velocity;
};
struct tint_symbol_10 {
uvec3 GlobalInvocationID;
};
struct UBO {
uint width;
};
layout (binding = 3) uniform UBO_1 {
uint width;
} ubo;
layout (binding = 4) buffer Buffer_1 {
float weights[];
} buf_in;
layout (binding = 5) buffer Buffer_2 {
float weights[];
} buf_out;
uniform highp writeonly image2D tex_out;
struct tint_symbol_12 {
uvec3 coord;
};
struct tint_symbol_14 {
uvec3 coord;
};
void export_level_inner(uvec3 coord) {
if (all(lessThan(coord.xy, uvec2(imageSize(tex_out))))) {
uint dst_offset = (coord.x + (coord.y * ubo.width));
uint src_offset = ((coord.x * 2u) + ((coord.y * 2u) * ubo.width));
float a_1 = buf_in.weights[(src_offset + 0u)];
float b = buf_in.weights[(src_offset + 1u)];
float c = buf_in.weights[((src_offset + 0u) + ubo.width)];
float d = buf_in.weights[((src_offset + 1u) + ubo.width)];
float sum = dot(vec4(a_1, b, c, d), vec4(1.0f));
buf_out.weights[dst_offset] = (sum / 4.0f);
vec4 probabilities = (vec4(a_1, (a_1 + b), ((a_1 + b) + c), sum) / max(sum, 0.0001f));
imageStore(tex_out, ivec2(coord.xy), probabilities);
}
}
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
void export_level(tint_symbol_14 tint_symbol_13) {
export_level_inner(tint_symbol_13.coord);
return;
}
void main() {
tint_symbol_14 inputs;
inputs.coord = gl_GlobalInvocationID;
export_level(inputs);
}