2T)eHtc23851a53779d P aPosition _uaPositionR aLocalRect _uaLocalRectRaDeviceClipRect_uaDeviceClipRectRaParams _uaParamsR aTransform _uaTransformRaUvRect0 _uaUvRect0RaUvRect1 _uaUvRect1RaUvRect2 _uaUvRect2\ uTransform _uuTransformfsColor0 _usColor0fsColor1 _usColor1fsColor2 _usColor2R oFragColor _uoFragColorfffK0B%struct VS_OUTPUT { float4 dx_Position : SV_Position; float4 gl_Position : TEXCOORD11; nointerpolation float4 v0 : TEXCOORD0; nointerpolation float4 v1 : TEXCOORD1; nointerpolation float4 v2 : TEXCOORD2; nointerpolation float3 v3 : TEXCOORD3; nointerpolation float3 v4 : TEXCOORD4; nointerpolation float3 v5 : TEXCOORD5; nointerpolation float3 v6 : TEXCOORD6; nointerpolation int2 v7 : TEXCOORD7; float2 v8 : TEXCOORD8; float2 v9 : TEXCOORD9; float2 v10 : TEXCOORD10; }; #pragma warning( disable: 3556 3571 ) float float_ctor(int x0) { return float(x0); } float2 vec2_ctor(int2 x0) { return float2(x0); } float4 vec4_ctor(int4 x0) { return float4(x0); } int int_ctor(float x0) { return int(x0); } // Uniforms uniform float4x4 _uTransform : register(c0); static const uint _sColor0 = 0; static const uint _sColor1 = 1; static const uint _sColor2 = 2; uniform Texture2D textures2D[3] : register(t0); uniform SamplerState samplers2D[3] : register(s0); #ifdef ANGLE_ENABLE_LOOP_FLATTEN #define LOOP [loop] #define FLATTEN [flatten] #else #define LOOP #define FLATTEN #endif #define ATOMIC_COUNTER_ARRAY_STRIDE 4 // Attributes static float2 _aPosition = {0, 0}; static float4 _aLocalRect = {0, 0, 0, 0}; static float4 _aDeviceClipRect = {0, 0, 0, 0}; static float4 _aParams = {0, 0, 0, 0}; static float4 _aTransform = {0, 0, 0, 0}; static float4 _aUvRect0 = {0, 0, 0, 0}; static float4 _aUvRect1 = {0, 0, 0, 0}; static float4 _aUvRect2 = {0, 0, 0, 0}; static float4 gl_Position = float4(0, 0, 0, 0); // Varyings static nointerpolation float3 _vYcbcrBias = {0, 0, 0}; static nointerpolation float3x3 _vRgbFromDebiasedYcbcr = {0, 0, 0, 0, 0, 0, 0, 0, 0}; static nointerpolation int2 _vYuvFormat = {0, 0}; static float2 _vUV_y = {0, 0}; static float2 _vUV_u = {0, 0}; static float2 _vUV_v = {0, 0}; static nointerpolation float4 _vUVBounds_y = {0, 0, 0, 0}; static nointerpolation float4 _vUVBounds_u = {0, 0, 0, 0}; static nointerpolation float4 _vUVBounds_v = {0, 0, 0, 0}; cbuffer DriverConstants : register(b1) { float4 dx_ViewAdjust : packoffset(c1); float2 dx_ViewCoords : packoffset(c2); float2 dx_ViewScale : packoffset(c3); struct SamplerMetadata { int baseLevel; int internalFormatBits; int wrapModes; int padding; int4 intBorderColor; }; SamplerMetadata samplerMetadata[3] : packoffset(c4); }; int2 gl_texture_ExternalSize(uint samplerIndex, int lod) { int baseLevel = 0; uint width; uint height; uint numberOfLevels; textures2D[samplerIndex].GetDimensions(baseLevel, width, height, numberOfLevels); width = max(width >> lod, 1); height = max(height >> lod, 1); return int2(width, height); } @@ VERTEX ATTRIBUTES @@ VS_OUTPUT generateOutput(VS_INPUT input) { VS_OUTPUT output; output.gl_Position = gl_Position; output.dx_Position.x = gl_Position.x; output.dx_Position.y = - gl_Position.y; output.dx_Position.z = (gl_Position.z + gl_Position.w) * 0.5; output.dx_Position.w = gl_Position.w; output.v0 = _vUVBounds_y; output.v1 = _vUVBounds_u; output.v2 = _vUVBounds_v; output.v3 = _vRgbFromDebiasedYcbcr[0]; output.v4 = _vRgbFromDebiasedYcbcr[1]; output.v5 = _vRgbFromDebiasedYcbcr[2]; output.v6 = _vYcbcrBias; output.v7 = _vYuvFormat; output.v8 = _vUV_y; output.v9 = _vUV_u; output.v10 = _vUV_v; return output; } VS_OUTPUT main(VS_INPUT input){ initAttributes(input); float2 _uv_14908 = {0, 0}; float2 _tmpvar_24909 = {0, 0}; (_tmpvar_24909 = ((_aLocalRect.xy * _aTransform.xy) + _aTransform.zw)); float2 _tmpvar_34910 = {0, 0}; (_tmpvar_34910 = ((_aLocalRect.zw * _aTransform.xy) + _aTransform.zw)); float2 _tmpvar_44911 = {0, 0}; (_tmpvar_44911 = min(max(lerp(_tmpvar_24909, _tmpvar_34910, _aPosition), _aDeviceClipRect.xy), _aDeviceClipRect.zw)); (_uv_14908 = ((_tmpvar_44911 - _tmpvar_24909) / (_tmpvar_34910 - _tmpvar_24909))); int _tmpvar_54912 = {0}; (_tmpvar_54912 = int_ctor(_aParams.z)); int _tmpvar_64913 = {0}; int _tmpvar_74914 = {0}; (_tmpvar_64913 = int_ctor(_aParams.w)); (_tmpvar_74914 = int_ctor(_aParams.y)); float3x3 _tmpvar_84915 = {0, 0, 0, 0, 0, 0, 0, 0, 0}; float4 _tmpvar_94916 = {0, 0, 0, 0}; float _channel_max_104917 = {0}; (_channel_max_104917 = 255.0); if ((8 < _tmpvar_64913)) { if ((_tmpvar_54912 == 1)) { (_channel_max_104917 = float_ctor(((1 << _tmpvar_64913) - 1))); } else { (_channel_max_104917 = 65535.0); } } if ((_tmpvar_74914 == 0)) { (_tmpvar_84915 = float3x3(1.0, 1.0, 1.0, 0.0, -0.17207, 0.88599998, 0.70099998, -0.35707, 0.0)); (_tmpvar_94916 = (vec4_ctor((int4(16, 128, 235, 240) << (_tmpvar_64913 - 8))) / _channel_max_104917)); } else { if ((_tmpvar_74914 == 1)) { float _tmpvar_114918 = {0}; (_tmpvar_114918 = (float_ctor(((1 << _tmpvar_64913) - 1)) / _channel_max_104917)); float4 _tmpvar_124919 = {0, 0, 0, 0}; (_tmpvar_124919.xy = float2(0.0, 0.0)); (_tmpvar_124919.z = _tmpvar_114918); (_tmpvar_124919.w = _tmpvar_114918); float4 _tmpvar_134920 = {0, 0, 0, 0}; (_tmpvar_134920.x = 0.0); (_tmpvar_134920.y = (vec4_ctor((int4(16, 128, 235, 240) << (_tmpvar_64913 - 8))) / _channel_max_104917).y); (_tmpvar_134920.zw = _tmpvar_124919.zw); (_tmpvar_84915 = float3x3(1.0, 1.0, 1.0, 0.0, -0.17207, 0.88599998, 0.70099998, -0.35707, 0.0)); (_tmpvar_94916 = _tmpvar_134920); } else { if ((_tmpvar_74914 == 2)) { (_tmpvar_84915 = float3x3(1.0, 1.0, 1.0, 0.0, -0.093659997, 0.9278, 0.78740001, -0.23406, 0.0)); (_tmpvar_94916 = (vec4_ctor((int4(16, 128, 235, 240) << (_tmpvar_64913 - 8))) / _channel_max_104917)); } else { if ((_tmpvar_74914 == 3)) { float _tmpvar_144921 = {0}; (_tmpvar_144921 = (float_ctor(((1 << _tmpvar_64913) - 1)) / _channel_max_104917)); float4 _tmpvar_154922 = {0, 0, 0, 0}; (_tmpvar_154922.xy = float2(0.0, 0.0)); (_tmpvar_154922.z = _tmpvar_144921); (_tmpvar_154922.w = _tmpvar_144921); float4 _tmpvar_164923 = {0, 0, 0, 0}; (_tmpvar_164923.x = 0.0); (_tmpvar_164923.y = (vec4_ctor((int4(16, 128, 235, 240) << (_tmpvar_64913 - 8))) / _channel_max_104917).y); (_tmpvar_164923.zw = _tmpvar_154922.zw); (_tmpvar_84915 = float3x3(1.0, 1.0, 1.0, 0.0, -0.093659997, 0.9278, 0.78740001, -0.23406, 0.0)); (_tmpvar_94916 = _tmpvar_164923); } else { if ((_tmpvar_74914 == 4)) { (_tmpvar_84915 = float3x3(1.0, 1.0, 1.0, 0.0, -0.082280003, 0.94069999, 0.73729998, -0.28568, 0.0)); (_tmpvar_94916 = (vec4_ctor((int4(16, 128, 235, 240) << (_tmpvar_64913 - 8))) / _channel_max_104917)); } else { if ((_tmpvar_74914 == 5)) { float _tmpvar_174924 = {0}; (_tmpvar_174924 = (float_ctor(((1 << _tmpvar_64913) - 1)) / _channel_max_104917)); float4 _tmpvar_184925 = {0, 0, 0, 0}; (_tmpvar_184925.xy = float2(0.0, 0.0)); (_tmpvar_184925.z = _tmpvar_174924); (_tmpvar_184925.w = _tmpvar_174924); float4 _tmpvar_194926 = {0, 0, 0, 0}; (_tmpvar_194926.x = 0.0); (_tmpvar_194926.y = (vec4_ctor((int4(16, 128, 235, 240) << (_tmpvar_64913 - 8))) / _channel_max_104917).y); (_tmpvar_194926.zw = _tmpvar_184925.zw); (_tmpvar_84915 = float3x3(1.0, 1.0, 1.0, 0.0, -0.082280003, 0.94069999, 0.73729998, -0.28568, 0.0)); (_tmpvar_94916 = _tmpvar_194926); } else { float _tmpvar_204927 = {0}; (_tmpvar_204927 = (float_ctor(((1 << _tmpvar_64913) - 1)) / _channel_max_104917)); float4 _tmpvar_214928 = {0, 0, 0, 0}; (_tmpvar_214928.xy = float2(0.0, 0.0)); (_tmpvar_214928.z = _tmpvar_204927); (_tmpvar_214928.w = _tmpvar_204927); (_tmpvar_84915 = float3x3(0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0)); (_tmpvar_94916 = _tmpvar_214928); } } } } } } float2 _tmpvar_224929 = {0, 0}; (_tmpvar_224929 = (1.0 / (_tmpvar_94916.zw - _tmpvar_94916.xy))); float3x3 _tmpvar_234930 = {0, 0, 0, 0, 0, 0, 0, 0, 0}; (_tmpvar_234930[0].x = _tmpvar_224929.x); (_tmpvar_234930[0].y = 0.0); (_tmpvar_234930[0].z = 0.0); (_tmpvar_234930[1].x = 0.0); (_tmpvar_234930[1].y = _tmpvar_224929.y); (_tmpvar_234930[1].z = 0.0); (_tmpvar_234930[2].x = 0.0); (_tmpvar_234930[2].y = 0.0); (_tmpvar_234930[2].z = _tmpvar_224929.y); (_vYcbcrBias = _tmpvar_94916.xyy); (_vRgbFromDebiasedYcbcr = transpose(mul(transpose(_tmpvar_84915), transpose(_tmpvar_234930)))); (_vYuvFormat.x = _tmpvar_54912); float2 _tmpvar_244931 = {0, 0}; (_tmpvar_244931 = vec2_ctor(gl_texture_ExternalSize(_sColor0, 0))); float4 _tmpvar_254932 = {0, 0, 0, 0}; (_tmpvar_254932.xy = (_aUvRect0.xy + float2(0.5, 0.5))); (_tmpvar_254932.zw = (_aUvRect0.zw - float2(0.5, 0.5))); (_vUV_y = (lerp(_aUvRect0.xy, _aUvRect0.zw, _uv_14908) / _tmpvar_244931)); (_vUVBounds_y = (_tmpvar_254932 / _tmpvar_244931.xyxy)); float2 _tmpvar_264933 = {0, 0}; (_tmpvar_264933 = vec2_ctor(gl_texture_ExternalSize(_sColor1, 0))); float4 _tmpvar_274934 = {0, 0, 0, 0}; (_tmpvar_274934.xy = (_aUvRect1.xy + float2(0.5, 0.5))); (_tmpvar_274934.zw = (_aUvRect1.zw - float2(0.5, 0.5))); (_vUV_u = (lerp(_aUvRect1.xy, _aUvRect1.zw, _uv_14908) / _tmpvar_264933)); (_vUVBounds_u = (_tmpvar_274934 / _tmpvar_264933.xyxy)); float2 _tmpvar_284935 = {0, 0}; (_tmpvar_284935 = vec2_ctor(gl_texture_ExternalSize(_sColor2, 0))); float4 _tmpvar_294936 = {0, 0, 0, 0}; (_tmpvar_294936.xy = (_aUvRect2.xy + float2(0.5, 0.5))); (_tmpvar_294936.zw = (_aUvRect2.zw - float2(0.5, 0.5))); (_vUV_v = (lerp(_aUvRect2.xy, _aUvRect2.zw, _uv_14908) / _tmpvar_284935)); (_vUVBounds_v = (_tmpvar_294936 / _tmpvar_284935.xyxy)); float4 _tmpvar_304937 = {0, 0, 0, 0}; (_tmpvar_304937.w = 1.0); (_tmpvar_304937.xy = _tmpvar_44911); (_tmpvar_304937.z = _aParams.x); (gl_Position = mul(transpose(_uTransform), _tmpvar_304937)); return generateOutput(input); } @struct PS_INPUT { float4 dx_Position : SV_Position; float4 gl_Position : TEXCOORD11; nointerpolation float4 v0 : TEXCOORD0; nointerpolation float4 v1 : TEXCOORD1; nointerpolation float4 v2 : TEXCOORD2; nointerpolation float3 v3 : TEXCOORD3; nointerpolation float3 v4 : TEXCOORD4; nointerpolation float3 v5 : TEXCOORD5; nointerpolation float3 v6 : TEXCOORD6; nointerpolation int2 v7 : TEXCOORD7; float2 v8 : TEXCOORD8; float2 v9 : TEXCOORD9; float2 v10 : TEXCOORD10; }; #pragma warning( disable: 3556 3571 ) // Uniforms static const uint _sColor0 = 0; static const uint _sColor1 = 1; static const uint _sColor2 = 2; uniform Texture2D textures2D[3] : register(t0); uniform SamplerState samplers2D[3] : register(s0); #ifdef ANGLE_ENABLE_LOOP_FLATTEN #define LOOP [loop] #define FLATTEN [flatten] #else #define LOOP #define FLATTEN #endif #define ATOMIC_COUNTER_ARRAY_STRIDE 4 // Varyings static nointerpolation float3 _vYcbcrBias = {0, 0, 0}; static nointerpolation float3x3 _vRgbFromDebiasedYcbcr = {0, 0, 0, 0, 0, 0, 0, 0, 0}; static nointerpolation int2 _vYuvFormat = {0, 0}; static float2 _vUV_y = {0, 0}; static float2 _vUV_u = {0, 0}; static float2 _vUV_v = {0, 0}; static nointerpolation float4 _vUVBounds_y = {0, 0, 0, 0}; static nointerpolation float4 _vUVBounds_u = {0, 0, 0, 0}; static nointerpolation float4 _vUVBounds_v = {0, 0, 0, 0}; static float4 out_oFragColor = {0, 0, 0, 0}; cbuffer DriverConstants : register(b1) { struct SamplerMetadata { int baseLevel; int internalFormatBits; int wrapModes; int padding; int4 intBorderColor; }; SamplerMetadata samplerMetadata[3] : packoffset(c4); }; float4 gl_texture_External(uint samplerIndex, float2 t) { return textures2D[samplerIndex].Sample(samplers2D[samplerIndex], float2(t.x, t.y)); } @@ PIXEL OUTPUT @@ PS_OUTPUT main(PS_INPUT input){ _vUVBounds_y = input.v0; _vUVBounds_u = input.v1; _vUVBounds_v = input.v2; _vRgbFromDebiasedYcbcr[0] = input.v3.xyz; _vRgbFromDebiasedYcbcr[1] = input.v4.xyz; _vRgbFromDebiasedYcbcr[2] = input.v5.xyz; _vYcbcrBias = input.v6.xyz; _vYuvFormat = input.v7.xy; _vUV_y = input.v8.xy; _vUV_u = input.v9.xy; _vUV_v = input.v10.xy; float3 _ycbcr_sample_14900 = {0, 0, 0}; bool _tmpvar_24901 = {0}; bool _tmpvar_34902 = {0}; (_tmpvar_34902 = false); (_tmpvar_24901 = (2 == _vYuvFormat.x)); if (_tmpvar_24901) { (_ycbcr_sample_14900.x = gl_texture_External(_sColor0, min(max(_vUV_y, _vUVBounds_y.xy), _vUVBounds_y.zw)).x); (_ycbcr_sample_14900.y = gl_texture_External(_sColor1, min(max(_vUV_u, _vUVBounds_u.xy), _vUVBounds_u.zw)).x); (_ycbcr_sample_14900.z = gl_texture_External(_sColor2, min(max(_vUV_v, _vUVBounds_v.xy), _vUVBounds_v.zw)).x); (_tmpvar_34902 = true); } (_tmpvar_24901 = (_tmpvar_24901 || (0 == _vYuvFormat.x))); (_tmpvar_24901 = (_tmpvar_24901 || (1 == _vYuvFormat.x))); (_tmpvar_24901 = (_tmpvar_24901 && (!_tmpvar_34902))); if (_tmpvar_24901) { (_ycbcr_sample_14900.x = gl_texture_External(_sColor0, min(max(_vUV_y, _vUVBounds_y.xy), _vUVBounds_y.zw)).x); (_ycbcr_sample_14900.yz = gl_texture_External(_sColor1, min(max(_vUV_u, _vUVBounds_u.xy), _vUVBounds_u.zw)).xy); (_tmpvar_34902 = true); } (_tmpvar_24901 = (_tmpvar_24901 || (3 == _vYuvFormat.x))); (_tmpvar_24901 = (_tmpvar_24901 && (!_tmpvar_34902))); if (_tmpvar_24901) { (_ycbcr_sample_14900 = gl_texture_External(_sColor0, min(max(_vUV_y, _vUVBounds_y.xy), _vUVBounds_y.zw)).yzx); (_tmpvar_34902 = true); } (_tmpvar_24901 = (!_tmpvar_34902)); if (_tmpvar_24901) { (_ycbcr_sample_14900 = float3(0.0, 0.0, 0.0)); (_tmpvar_34902 = true); } float4 _tmpvar_44903 = {0, 0, 0, 0}; (_tmpvar_44903.w = 1.0); (_tmpvar_44903.xyz = mul(transpose(_vRgbFromDebiasedYcbcr), (_ycbcr_sample_14900 - _vYcbcrBias))); (out_oFragColor = _tmpvar_44903); return generateOutput(); } Rout_oFragColorout_oFragColorOstruct GS_INPUT { float4 dx_Position : SV_Position; float4 gl_Position : TEXCOORD11; nointerpolation float4 v0 : TEXCOORD0; nointerpolation float4 v1 : TEXCOORD1; nointerpolation float4 v2 : TEXCOORD2; nointerpolation float3 v3 : TEXCOORD3; nointerpolation float3 v4 : TEXCOORD4; nointerpolation float3 v5 : TEXCOORD5; nointerpolation float3 v6 : TEXCOORD6; nointerpolation int2 v7 : TEXCOORD7; float2 v8 : TEXCOORD8; float2 v9 : TEXCOORD9; float2 v10 : TEXCOORD10; }; struct GS_OUTPUT { float4 dx_Position : SV_Position; float4 gl_Position : TEXCOORD11; nointerpolation float4 v0 : TEXCOORD0; nointerpolation float4 v1 : TEXCOORD1; nointerpolation float4 v2 : TEXCOORD2; nointerpolation float3 v3 : TEXCOORD3; nointerpolation float3 v4 : TEXCOORD4; nointerpolation float3 v5 : TEXCOORD5; nointerpolation float3 v6 : TEXCOORD6; nointerpolation int2 v7 : TEXCOORD7; float2 v8 : TEXCOORD8; float2 v9 : TEXCOORD9; float2 v10 : TEXCOORD10; }; void copyVertex(inout GS_OUTPUT output, GS_INPUT input, GS_INPUT flatinput) { output.gl_Position = input.gl_Position; output.v0 = flatinput.v0; output.v1 = flatinput.v1; output.v2 = flatinput.v2; output.v3 = flatinput.v3; output.v4 = flatinput.v4; output.v5 = flatinput.v5; output.v6 = flatinput.v6; output.v7 = flatinput.v7; output.v8 = input.v8; output.v9 = input.v9; output.v10 = input.v10; #ifndef ANGLE_POINT_SPRITE_SHADER output.dx_Position = input.dx_Position; #endif // ANGLE_POINT_SPRITE_SHADER } DXBC{ > @4 \0RDEFp\ gtextures2D$Globalsg@@_uTransformMicrosoft (R) HLSL Shader Compiler 10.1ISGNTEXCOORDOSGNX @L LLLLLLLL  L  L  L   SV_PositionTEXCOORDSHDR AsjYF XpUUXpUUXpUU_2_______g e e e e er er er er e2  e2  e  e2  h 2 FFA2 2F F42FF32F2FAF2F r"B@  @)@:@+:7 ::@G7 B*:@C*@) @:+FF 62@30Ѷ6@?t3??b? *@: @)@:+:":*62@30Ѷ6@?t3??b?6@ *@:@) @:+FF 62@пmo6@? I??Mm? @)"@:+""*) @:+FF   @6@7 F7  FF<B*:  @kD7 @?STATtu )  DXBC-*h|~/z 48lRDEFr\g samplers2Dtextures2DMicrosoft (R) HLSL Shader Compiler 10.1ISGNX @L LLLLLLLL L L  L  SV_PositionTEXCOORDOSGN, SV_TARGETSHDR0ALjZ`Z`Z`XpUUXpUUXpUUbbbbrbrbrbrb b2 b b2 e h  @ 42FF 32FE FF~`42F 32FE "F~`42FF 32FE BF|`6r@<" <"*;B "*42FF 32FE FF~`42F 32FE bF&}`6@<":;B "*4b 3bVE r|`6@rFrFFA8rVF2 FF2 r F F6 @?>STATt+ MĦ%7Ѥ