skia2/resources/sksl/intrinsics/IntBitsToFloat.sksl
John Stiles b39236bc0f Add floatBitsToInt family of ES3 intrinsics to SkSL public ES3.
These now have proper testing and compile-time optimization support.

Change-Id: I7978161ec126e1c3096b9ca9dfbb2be7d8ea02f5
Bug: skia:12202
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/440859
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-08-20 14:58:44 +00:00

21 lines
926 B
Plaintext

uniform float testInput;
uniform float2x2 testMatrix2x2;
uniform half4 colorGreen, colorRed;
half4 main(float2 coords) {
const float4 constVal = float4(-1, 0, 1, 2);
const int4 expectedA = int4(-0x40800000, 0x00000000, 0x3F800000, 0x40000000);
float4 input = float4(testMatrix2x2) * float4(1, 1, -1, -1);
int4 expectedB = int4(0x3F800000, 0x40000000, -0x3FC00000, -0x3F800000);
return (constVal.x == intBitsToFloat(expectedA.x) &&
constVal.xy == intBitsToFloat(expectedA.xy) &&
constVal.xyz == intBitsToFloat(expectedA.xyz) &&
constVal.xyzw == intBitsToFloat(expectedA.xyzw) &&
input.x == intBitsToFloat(expectedB.x) &&
input.xy == intBitsToFloat(expectedB.xy) &&
input.xyz == intBitsToFloat(expectedB.xyz) &&
input.xyzw == intBitsToFloat(expectedB.xyzw)) ? colorGreen : colorRed;
}