skia2/tests/sksl/intrinsics/Normalize.glsl
John Stiles 3ef2c61c50 Implement compile-time optimization for normalize().
This one is structured a bit differently; it gets to length() value,
then divides the input by its length using a bit of DSL. Since all the
inputs are constant, the constant-folder will do the right thing.

$genType normalize($genType x);
$genHType normalize($genHType x);

Change-Id: I51e5c65fa9e33738cbe253fcc97ee2160c48cfdd
Bug: skia:12034
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/412340
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-05-26 15:06:08 +00:00

10 lines
505 B
GLSL

out vec4 sk_FragColor;
uniform vec4 input;
uniform vec4 colorGreen;
uniform vec4 colorRed;
vec4 main() {
vec4 expectedVec = vec4(1.0, 0.0, 0.0, 0.0);
return ((((((normalize(input.x) == expectedVec.x && normalize(input.xy) == expectedVec.xy) && normalize(input.xyz) == expectedVec.xyz) && normalize(input) == expectedVec) && 1.0 == expectedVec.x) && vec2(0.0, 1.0) == expectedVec.yx) && vec3(0.0, 1.0, 0.0) == expectedVec.zxy) && vec4(1.0, 0.0, 0.0, 0.0) == expectedVec ? colorGreen : colorRed;
}