Texture2D tex : register(t0); SamplerState _tex_sampler : register(s0); static float2 vUV; static float4 fragColor; static float4 vTint; struct SPIRV_Cross_Input { float2 vUV : TEXCOORD0; float4 vTint : TEXCOORD1; }; struct SPIRV_Cross_Output { float4 fragColor : SV_Target0; }; uint2 SPIRV_Cross_textureSize(Texture2D Tex, uint Level, out uint Param) { uint2 ret; Tex.GetDimensions(Level, ret.x, ret.y, Param); return ret; } float3 decodeRGB565(int rgb5) { int3 colorUnpacked = (rgb5.xxx >> int3(11, 5, 0)) & int3(31, 63, 31); return float3(float3(colorUnpacked) / float3(31.0f, 63.0f, 31.0f)); } void frag_main() { uint _50_dummy_parameter; int2 size = int2(SPIRV_Cross_textureSize(tex, uint(0), _50_dummy_parameter)); float2 coord = floor(vUV * float2(size)); int rgb5 = int(tex.Load(int3(int2(coord), 0)).x); int param = rgb5; float3 _81 = decodeRGB565(param) * vTint.xyz; fragColor = float4(_81.x, _81.y, _81.z, fragColor.w); fragColor.w = vTint.w; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { vUV = stage_input.vUV; vTint = stage_input.vTint; frag_main(); SPIRV_Cross_Output stage_output; stage_output.fragColor = fragColor; return stage_output; }