skia2/resources/sksl/intrinsics/UintBitsToFloat.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
935 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 uint4 expectedA = uint4(0xBF800000, 0x00000000, 0x3F800000, 0x40000000);
float4 input = float4(testMatrix2x2) * float4(1, 1, -1, -1);
uint4 expectedB = uint4(0x3F800000, 0x40000000, 0xC0400000, 0xC0800000);
return (constVal.x == uintBitsToFloat(expectedA.x) &&
constVal.xy == uintBitsToFloat(expectedA.xy) &&
constVal.xyz == uintBitsToFloat(expectedA.xyz) &&
constVal.xyzw == uintBitsToFloat(expectedA.xyzw) &&
input.x == uintBitsToFloat(expectedB.x) &&
input.xy == uintBitsToFloat(expectedB.xy) &&
input.xyz == uintBitsToFloat(expectedB.xyz) &&
input.xyzw == uintBitsToFloat(expectedB.xyzw)) ? colorGreen : colorRed;
}