Stephen White ba4d6ab01d GLSL: implement derivative instructions.
While Desktop GLSL supports the Coarse and Fine flavours, GLSL ES does
not. For now, emit dFdx/dFdy in all cases for ES, but excluding the
Coarse and Fine flavours via validation is also an option.

Bug: tint:1445
Change-Id: Iaac589f72043b5547e9141a6e870c1fd49631f6f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/82142
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2022-02-28 18:08:13 +00:00

46 lines
962 B
GLSL

#version 310 es
precision mediump float;
layout(location = 0) out vec4 x_GLF_color_1_1;
struct buf0 {
float two;
};
vec4 tint_symbol = vec4(0.0f, 0.0f, 0.0f, 0.0f);
layout(binding = 0) uniform buf0_1 {
float two;
} x_8;
vec4 x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
void main_1() {
float a = 0.0f;
float b = 0.0f;
float x_33 = tint_symbol.x;
a = dFdx(cos(x_33));
float x_37 = x_8.two;
b = mix(2.0f, x_37, a);
if (bool(uint((b >= 1.899999976f)) & uint((b <= 2.099999905f)))) {
x_GLF_color = vec4(1.0f, 0.0f, 0.0f, 1.0f);
} else {
x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
}
return;
}
struct main_out {
vec4 x_GLF_color_1;
};
main_out tint_symbol_1(vec4 tint_symbol_2) {
tint_symbol = tint_symbol_2;
main_1();
main_out tint_symbol_3 = main_out(x_GLF_color);
return tint_symbol_3;
}
void main() {
main_out inner_result = tint_symbol_1(gl_FragCoord);
x_GLF_color_1_1 = inner_result.x_GLF_color_1;
return;
}