1*c8dee2aaSAndroid Build Coastguard Workercbuffer _UniformBuffer : register(b0, space0) 2*c8dee2aaSAndroid Build Coastguard Worker{ 3*c8dee2aaSAndroid Build Coastguard Worker uint _7_a : packoffset(c0); 4*c8dee2aaSAndroid Build Coastguard Worker}; 5*c8dee2aaSAndroid Build Coastguard Worker 6*c8dee2aaSAndroid Build Coastguard Worker 7*c8dee2aaSAndroid Build Coastguard Workerstatic float4 sk_FragColor; 8*c8dee2aaSAndroid Build Coastguard Worker 9*c8dee2aaSAndroid Build Coastguard Workerstruct SPIRV_Cross_Output 10*c8dee2aaSAndroid Build Coastguard Worker{ 11*c8dee2aaSAndroid Build Coastguard Worker float4 sk_FragColor : SV_Target0; 12*c8dee2aaSAndroid Build Coastguard Worker}; 13*c8dee2aaSAndroid Build Coastguard Worker 14*c8dee2aaSAndroid Build Coastguard Workeruint spvPackHalf2x16(float2 value) 15*c8dee2aaSAndroid Build Coastguard Worker{ 16*c8dee2aaSAndroid Build Coastguard Worker uint2 Packed = f32tof16(value); 17*c8dee2aaSAndroid Build Coastguard Worker return Packed.x | (Packed.y << 16); 18*c8dee2aaSAndroid Build Coastguard Worker} 19*c8dee2aaSAndroid Build Coastguard Worker 20*c8dee2aaSAndroid Build Coastguard Workerfloat2 spvUnpackHalf2x16(uint value) 21*c8dee2aaSAndroid Build Coastguard Worker{ 22*c8dee2aaSAndroid Build Coastguard Worker return f16tof32(uint2(value & 0xffff, value >> 16)); 23*c8dee2aaSAndroid Build Coastguard Worker} 24*c8dee2aaSAndroid Build Coastguard Worker 25*c8dee2aaSAndroid Build Coastguard Workeruint spvPackUnorm4x8(float4 value) 26*c8dee2aaSAndroid Build Coastguard Worker{ 27*c8dee2aaSAndroid Build Coastguard Worker uint4 Packed = uint4(round(saturate(value) * 255.0)); 28*c8dee2aaSAndroid Build Coastguard Worker return Packed.x | (Packed.y << 8) | (Packed.z << 16) | (Packed.w << 24); 29*c8dee2aaSAndroid Build Coastguard Worker} 30*c8dee2aaSAndroid Build Coastguard Worker 31*c8dee2aaSAndroid Build Coastguard Workerfloat4 spvUnpackUnorm4x8(uint value) 32*c8dee2aaSAndroid Build Coastguard Worker{ 33*c8dee2aaSAndroid Build Coastguard Worker uint4 Packed = uint4(value & 0xff, (value >> 8) & 0xff, (value >> 16) & 0xff, value >> 24); 34*c8dee2aaSAndroid Build Coastguard Worker return float4(Packed) / 255.0; 35*c8dee2aaSAndroid Build Coastguard Worker} 36*c8dee2aaSAndroid Build Coastguard Worker 37*c8dee2aaSAndroid Build Coastguard Workeruint spvPackSnorm4x8(float4 value) 38*c8dee2aaSAndroid Build Coastguard Worker{ 39*c8dee2aaSAndroid Build Coastguard Worker int4 Packed = int4(round(clamp(value, -1.0, 1.0) * 127.0)) & 0xff; 40*c8dee2aaSAndroid Build Coastguard Worker return uint(Packed.x | (Packed.y << 8) | (Packed.z << 16) | (Packed.w << 24)); 41*c8dee2aaSAndroid Build Coastguard Worker} 42*c8dee2aaSAndroid Build Coastguard Worker 43*c8dee2aaSAndroid Build Coastguard Workerfloat4 spvUnpackSnorm4x8(uint value) 44*c8dee2aaSAndroid Build Coastguard Worker{ 45*c8dee2aaSAndroid Build Coastguard Worker int SignedValue = int(value); 46*c8dee2aaSAndroid Build Coastguard Worker int4 Packed = int4(SignedValue << 24, SignedValue << 16, SignedValue << 8, SignedValue) >> 24; 47*c8dee2aaSAndroid Build Coastguard Worker return clamp(float4(Packed) / 127.0, -1.0, 1.0); 48*c8dee2aaSAndroid Build Coastguard Worker} 49*c8dee2aaSAndroid Build Coastguard Worker 50*c8dee2aaSAndroid Build Coastguard Workeruint spvPackUnorm2x16(float2 value) 51*c8dee2aaSAndroid Build Coastguard Worker{ 52*c8dee2aaSAndroid Build Coastguard Worker uint2 Packed = uint2(round(saturate(value) * 65535.0)); 53*c8dee2aaSAndroid Build Coastguard Worker return Packed.x | (Packed.y << 16); 54*c8dee2aaSAndroid Build Coastguard Worker} 55*c8dee2aaSAndroid Build Coastguard Worker 56*c8dee2aaSAndroid Build Coastguard Workerfloat2 spvUnpackUnorm2x16(uint value) 57*c8dee2aaSAndroid Build Coastguard Worker{ 58*c8dee2aaSAndroid Build Coastguard Worker uint2 Packed = uint2(value & 0xffff, value >> 16); 59*c8dee2aaSAndroid Build Coastguard Worker return float2(Packed) / 65535.0; 60*c8dee2aaSAndroid Build Coastguard Worker} 61*c8dee2aaSAndroid Build Coastguard Worker 62*c8dee2aaSAndroid Build Coastguard Workeruint spvPackSnorm2x16(float2 value) 63*c8dee2aaSAndroid Build Coastguard Worker{ 64*c8dee2aaSAndroid Build Coastguard Worker int2 Packed = int2(round(clamp(value, -1.0, 1.0) * 32767.0)) & 0xffff; 65*c8dee2aaSAndroid Build Coastguard Worker return uint(Packed.x | (Packed.y << 16)); 66*c8dee2aaSAndroid Build Coastguard Worker} 67*c8dee2aaSAndroid Build Coastguard Worker 68*c8dee2aaSAndroid Build Coastguard Workerfloat2 spvUnpackSnorm2x16(uint value) 69*c8dee2aaSAndroid Build Coastguard Worker{ 70*c8dee2aaSAndroid Build Coastguard Worker int SignedValue = int(value); 71*c8dee2aaSAndroid Build Coastguard Worker int2 Packed = int2(SignedValue << 16, SignedValue) >> 16; 72*c8dee2aaSAndroid Build Coastguard Worker return clamp(float2(Packed) / 32767.0, -1.0, 1.0); 73*c8dee2aaSAndroid Build Coastguard Worker} 74*c8dee2aaSAndroid Build Coastguard Worker 75*c8dee2aaSAndroid Build Coastguard Workervoid frag_main() 76*c8dee2aaSAndroid Build Coastguard Worker{ 77*c8dee2aaSAndroid Build Coastguard Worker float2 _14 = spvUnpackHalf2x16(_7_a); 78*c8dee2aaSAndroid Build Coastguard Worker sk_FragColor = float4(_14.x, _14.y, sk_FragColor.z, sk_FragColor.w); 79*c8dee2aaSAndroid Build Coastguard Worker float2 _23 = spvUnpackUnorm2x16(_7_a); 80*c8dee2aaSAndroid Build Coastguard Worker sk_FragColor = float4(_23.x, _23.y, sk_FragColor.z, sk_FragColor.w); 81*c8dee2aaSAndroid Build Coastguard Worker float2 _28 = spvUnpackSnorm2x16(_7_a); 82*c8dee2aaSAndroid Build Coastguard Worker sk_FragColor = float4(_28.x, _28.y, sk_FragColor.z, sk_FragColor.w); 83*c8dee2aaSAndroid Build Coastguard Worker sk_FragColor = spvUnpackUnorm4x8(_7_a); 84*c8dee2aaSAndroid Build Coastguard Worker sk_FragColor = spvUnpackSnorm4x8(_7_a); 85*c8dee2aaSAndroid Build Coastguard Worker} 86*c8dee2aaSAndroid Build Coastguard Worker 87*c8dee2aaSAndroid Build Coastguard WorkerSPIRV_Cross_Output main() 88*c8dee2aaSAndroid Build Coastguard Worker{ 89*c8dee2aaSAndroid Build Coastguard Worker frag_main(); 90*c8dee2aaSAndroid Build Coastguard Worker SPIRV_Cross_Output stage_output; 91*c8dee2aaSAndroid Build Coastguard Worker stage_output.sk_FragColor = sk_FragColor; 92*c8dee2aaSAndroid Build Coastguard Worker return stage_output; 93*c8dee2aaSAndroid Build Coastguard Worker} 94