#include "../Includes/Common.hlsl" Texture2D t9 : register(t9); Texture3D t8 : register(t8); Texture2D t7 : register(t7); Texture2D t6 : register(t6); Texture2D t5 : register(t5); Texture2D t4 : register(t4); Texture2D t3 : register(t3); Texture2D t2 : register(t2); Texture2D t1 : register(t1); Texture2D t0 : register(t0); SamplerState s9_s : register(s9); SamplerState s8_s : register(s8); SamplerState s7_s : register(s7); SamplerState s6_s : register(s6); SamplerState s5_s : register(s5); SamplerState s4_s : register(s4); SamplerState s3_s : register(s3); SamplerState s2_s : register(s2); SamplerState s1_s : register(s1); SamplerState s0_s : register(s0); cbuffer cb0 : register(b0) { float4 cb0[52]; } #define cmp void main( float4 v0 : SV_POSITION0, float2 v1 : TEXCOORD0, float2 w1 : TEXCOORD1, out float4 o0 : SV_Target0) { float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12; r0.xy = float2(-0.5,-0.5) + v1.xy; r0.zw = r0.xy * cb0[32].zz + float2(0.5,0.5); r0.xy = r0.xy * cb0[32].zz + -cb0[33].xy; r0.xy = cb0[33].zw * r0.xy; r1.x = dot(r0.xy, r0.xy); r1.x = sqrt(r1.x); r1.y = cmp(0 < cb0[32].w); if (r1.y != 0) { r1.zw = cb0[32].xy * r1.xx; sincos(r1.z, r2.x, r3.x); r1.z = r2.x / r3.x; r1.w = 1 / r1.w; r1.z = r1.z * r1.w + -1; r1.zw = r0.xy * r1.zz + r0.zw; } else { r2.x = 1 / r1.x; r2.x = cb0[32].x * r2.x; r1.x = cb0[32].y * r1.x; r2.y = min(1, abs(r1.x)); r2.z = max(1, abs(r1.x)); r2.z = 1 / r2.z; r2.y = r2.y * r2.z; r2.z = r2.y * r2.y; r2.w = r2.z * 0.0208350997 + -0.0851330012; r2.w = r2.z * r2.w + 0.180141002; r2.w = r2.z * r2.w + -0.330299497; r2.z = r2.z * r2.w + 0.999866009; r2.w = r2.y * r2.z; r3.x = cmp(1 < abs(r1.x)); r2.w = r2.w * -2 + 1.57079637; r2.w = asfloat(asint(r3.x) & asint(r2.w)); r2.y = r2.y * r2.z + r2.w; r1.x = min(1, r1.x); r1.x = cmp(r1.x < -r1.x); r1.x = r1.x ? -r2.y : r2.y; r1.x = r2.x * r1.x + -1; r1.zw = r0.xy * r1.xx + r0.zw; } r0.xyzw = float4(0.5,0.5,0.5,0.5) * r1.zwzw; r0.xyzw = frac(r0.xyzw); r0.xyzw = r0.xyzw * float4(2,2,2,2) + float4(-1,-1,-1,-1); r0.xyzw = float4(1,1,0.5,0.5) + -abs(r0.xyzw); r1.xz = r0.zw * cb0[32].zz + float2(0.5,0.5); r0.zw = r0.zw * cb0[32].zz + -cb0[33].xy; r0.zw = cb0[33].zw * r0.zw; r1.w = dot(r0.zw, r0.zw); r1.w = sqrt(r1.w); if (r1.y != 0) { r2.xy = cb0[32].xy * r1.ww; sincos(r2.x, r2.x, r3.x); r2.x = r2.x / r3.x; r2.y = 1 / r2.y; r2.x = r2.x * r2.y + -1; r2.xy = r0.zw * r2.xx + r1.xz; } else { r2.z = 1 / r1.w; r2.z = cb0[32].x * r2.z; r1.w = cb0[32].y * r1.w; r2.w = min(1, abs(r1.w)); r3.x = max(1, abs(r1.w)); r3.x = 1 / r3.x; r2.w = r3.x * r2.w; r3.x = r2.w * r2.w; r3.y = r3.x * 0.0208350997 + -0.0851330012; r3.y = r3.x * r3.y + 0.180141002; r3.y = r3.x * r3.y + -0.330299497; r3.x = r3.x * r3.y + 0.999866009; r3.y = r3.x * r2.w; r3.z = cmp(1 < abs(r1.w)); r3.y = r3.y * -2 + 1.57079637; r3.y = asfloat(asint(r3.z) & asint(r3.y)); r2.w = r2.w * r3.x + r3.y; r1.w = min(1, r1.w); r1.w = cmp(r1.w < -r1.w); r1.w = r1.w ? -r2.w : r2.w; r1.w = r2.z * r1.w + -1; r2.xy = r0.zw * r1.ww + r1.xz; } r2.xyzw = float4(0.5,0.5,0.5,0.5) * r2.xyxy; r2.xyzw = frac(r2.xyzw); r2.xyzw = r2.xyzw * float4(2,2,2,2) + float4(-1,-1,-1,-1); r2.xyzw = float4(1,1,1,1) + -abs(r2.xyzw); r0.zw = float2(0.5,0.5) * w1.xy; r3.xyzw = t9.Sample(s9_s, r0.zw).xyzw; r0.zw = w1.xy * cb0[51].xy + cb0[51].zw; r4.xyzw = t9.Sample(s9_s, r0.zw).xyzw; r0.zw = float2(0.0250000004,0.0250000004) * r3.xy; r1.xz = r4.xy * r4.xy; r0.zw = r1.xz * float2(2,2) + r0.zw; r1.xz = float2(0.0250000004,0.0250000004) * r4.xy; r1.xz = r3.xy * float2(0.100000001,0.100000001) + r1.xz; r0.zw = r1.xz * cb0[40].ww + r0.zw; r0.zw = float2(0.075000003,0.075000003) * r0.zw; r0.zw = r0.zw * cb0[50].ww + v1.xy; r3.xyzw = t4.Sample(s4_s, v1.xy).xyzw; r0.zw = float2(-0.5,-0.5) + r0.zw; r1.xz = r0.zw * cb0[32].zz + float2(0.5,0.5); r0.zw = r0.zw * cb0[32].zz + -cb0[33].xy; r0.zw = cb0[33].zw * r0.zw; r1.w = dot(r0.zw, r0.zw); r1.w = sqrt(r1.w); if (r1.y != 0) { r3.yz = cb0[32].xy * r1.ww; sincos(r3.y, r5.x, r6.x); r3.y = r5.x / r6.x; r3.z = 1 / r3.z; r3.y = r3.y * r3.z + -1; r3.yz = r0.zw * r3.yy + r1.xz; } else { r3.w = 1 / r1.w; r3.w = cb0[32].x * r3.w; r4.w = cb0[32].y * r1.w; r5.x = min(1, abs(r4.w)); r5.y = max(1, abs(r4.w)); r5.y = 1 / r5.y; r5.x = r5.x * r5.y; r5.y = r5.x * r5.x; r5.z = r5.y * 0.0208350997 + -0.0851330012; r5.z = r5.y * r5.z + 0.180141002; r5.z = r5.y * r5.z + -0.330299497; r5.y = r5.y * r5.z + 0.999866009; r5.z = r5.x * r5.y; r5.w = cmp(1 < abs(r4.w)); r5.z = r5.z * -2 + 1.57079637; r5.z = asfloat(asint(r5.w) & asint(r5.z)); r5.x = r5.x * r5.y + r5.z; r4.w = min(1, r4.w); r4.w = cmp(r4.w < -r4.w); r4.w = r4.w ? -r5.x : r5.x; r3.w = r3.w * r4.w + -1; r3.yz = r0.zw * r3.ww + r1.xz; } r3.yz = float2(0.5,0.5) * r3.yz; r3.yz = frac(r3.yz); r3.yz = r3.yz * float2(2,2) + float2(-1,-1); r3.yz = float2(1,1) + -abs(r3.yz); r3.yz = cb0[30].zz * r3.yz; if (r1.y != 0) { r5.xy = cb0[32].xy * r1.ww; sincos(r5.x, r5.x, r6.x); r3.w = r5.x / r6.x; r4.w = 1 / r5.y; r3.w = r3.w * r4.w + -1; r5.xy = r0.zw * r3.ww + r1.xz; } else { r3.w = 1 / r1.w; r3.w = cb0[32].x * r3.w; r1.w = cb0[32].y * r1.w; r4.w = min(1, abs(r1.w)); r5.z = max(1, abs(r1.w)); r5.z = 1 / r5.z; r4.w = r5.z * r4.w; r5.z = r4.w * r4.w; r5.w = r5.z * 0.0208350997 + -0.0851330012; r5.w = r5.z * r5.w + 0.180141002; r5.w = r5.z * r5.w + -0.330299497; r5.z = r5.z * r5.w + 0.999866009; r5.w = r5.z * r4.w; r6.x = cmp(1 < abs(r1.w)); r5.w = r5.w * -2 + 1.57079637; r5.w = asfloat(asint(r6.x) & asint(r5.w)); r4.w = r4.w * r5.z + r5.w; r1.w = min(1, r1.w); r1.w = cmp(r1.w < -r1.w); r1.w = r1.w ? -r4.w : r4.w; r1.w = r3.w * r1.w + -1; r5.xy = r0.zw * r1.ww + r1.xz; } r5.xy = saturate(r5.xy); r0.zw = cb0[30].zz * r5.xy; r5.xyzw = t3.Sample(s3_s, r0.zw).xyzw; r6.xyzw = t2.Sample(s2_s, r3.yz).xyzw; r0.z = 1 + -cb0[24].w; r0.w = cb0[25].x * r6.x; r1.x = -cb0[24].w * r0.w + 1; r0.z = r0.z * r0.w + cb0[25].y; r0.z = r1.x / r0.z; r0.w = 1 + -r0.z; r0.w = r0.w * r0.w; r0.w = -r0.w * r0.w + 1; r1.xz = v1.xy * float2(2,2) + float2(-1,-1); r1.w = dot(r1.xz, r1.xz); r1.xz = r1.xz * r1.ww; r1.xz = cb0[42].xx * r1.xz; r0.z = cmp(0.99000001 >= r0.z); r0.z = r0.z ? 1.29999995 : 0.300000012; r3.yz = cb0[36].zw * -r1.xz; r3.yz = float2(0.5,0.5) * r3.yz; r1.w = dot(r3.yz, r3.yz); r1.w = sqrt(r1.w); int r1iw = min(16, max(3, int(r1.w))); r3.y = float(r1iw); r1.xz = -r1.xz / r3.yy; r0.z = r0.z * r0.w; r0.zw = float2(0.00999999978,0.000699999975) * r0.zz; r3.z = 0.100000001 + cb0[42].x; r0.zw = r0.zw * r3.zz + r1.xz; r6.y = 0; r7.w = 1; r8.xyzw = float4(0,0,0,0); r9.xyzw = float4(0,0,0,0); r1.xz = v1.xy; int r3iz = 0; while (true) { if (r3iz >= r1iw) break; r3.w = (int)r3iz; r3.w = 0.5 + r3.w; r6.x = r3.w / r3.y; r6.zw = float2(-0.5,-0.5) + r1.xz; r10.xy = r6.zw * cb0[32].zz + float2(0.5,0.5); r6.zw = r6.zw * cb0[32].zz + -cb0[33].xy; r6.zw = cb0[33].zw * r6.zw; r3.w = dot(r6.zw, r6.zw); r3.w = sqrt(r3.w); if (r1.y != 0) { r10.zw = cb0[32].xy * r3.ww; sincos(r10.z, r11.x, r12.x); r4.w = r11.x / r12.x; r10.z = 1 / r10.w; r4.w = r4.w * r10.z + -1; r10.zw = r6.zw * r4.ww + r10.xy; } else { r4.w = 1 / r3.w; r4.w = cb0[32].x * r4.w; r3.w = cb0[32].y * r3.w; r11.x = min(1, abs(r3.w)); r11.y = max(1, abs(r3.w)); r11.y = 1 / r11.y; r11.x = r11.x * r11.y; r11.y = r11.x * r11.x; r11.z = r11.y * 0.0208350997 + -0.0851330012; r11.z = r11.y * r11.z + 0.180141002; r11.z = r11.y * r11.z + -0.330299497; r11.y = r11.y * r11.z + 0.999866009; r11.z = r11.x * r11.y; r11.w = cmp(1 < abs(r3.w)); r11.z = r11.z * -2 + 1.57079637; r11.z = asfloat(asint(r11.w) & asint(r11.z)); r11.x = r11.x * r11.y + r11.z; r3.w = min(1, r3.w); r3.w = cmp(r3.w < -r3.w); r3.w = r3.w ? -r11.x : r11.x; r3.w = r4.w * r3.w + -1; r10.zw = r6.zw * r3.ww + r10.xy; } r6.zw = float2(0.5,0.5) * r10.zw; r6.zw = frac(r6.zw); r6.zw = r6.zw * float2(2,2) + float2(-1,-1); r6.zw = float2(1,1) + -abs(r6.zw); r6.zw = cb0[30].zz * r6.zw; r10.xyzw = t1.SampleLevel(s1_s, r6.zw, 0).xyzw; r11.xyzw = t7.SampleLevel(s7_s, r6.xy, 0).xyzw; r7.xyz = r11.xyz; r8.xyzw = r10.xyzw * r7.xyzw + r8.xyzw; r9.xyzw = r9.xyzw + r7.xyzw; r1.xz = r1.xz + r0.zw; r3iz++; } r1.xyzw = r8.xyzw / r9.xyzw; r1.xyz = r1.xyz * r3.xxx; r0.xy = r4.xy * float2(0.150000006,0.150000006) + r0.xy; r0.zw = saturate(r0.xy); r0.zw = cb0[30].zz * r0.zw; r6.xyzw = t5.Sample(s5_s, r0.zw).xyzw; r0.zw = r0.xy * cb0[38].xy + cb0[38].zw; r7.xyzw = t6.Sample(s6_s, r0.zw).xyzw; r0.z = r7.x * 0.100000001 + 0.550000012; r3.yz = float2(0.5,0.5) + -r0.xy; r8.xyzw = float4(0.100000001,0.100000001,0.0200000014,0.0200000014) * r3.yzyz; r9.xyzw = r7.xyxy * r7.xyxy; r9.xyzw = r9.xyzw * float4(0.200000003,0.200000003,0.200000003,0.200000003) + float4(0.99000001,0.99000001,0.980000019,0.980000019); r9.xyzw = -r9.xyzw * float4(0.5,0.5,0.5,0.5) + r0.xyxy; r9.xyzw = saturate(float4(0.5,0.5,0.5,0.5) + r9.xyzw); r9.xyzw = cb0[30].zzzz * r9.xyzw; r10.xyzw = t5.Sample(s5_s, r9.xy).xyzw; r9.xyzw = t5.Sample(s5_s, r9.zw).xyzw; r10.xyzw = r6.xyzw * float4(0.75,0.75,0.75,0.75) + r10.xyzw; r9.xyzw = r10.xyzw + r9.xyzw; r9.xyzw = float4(4,4,4,4) * r9.xyzw; r9.xyzw = min(float4(0.200000003,0.200000003,0.200000003,0.200000003), r9.xyzw); r6.xyzw = r6.xyzw * float4(0.5,0.5,0.5,0.5) + r9.xyzw; r2.xy = r2.xy * float2(-0.5,0.800000012) + float2(1,0.100000001); r2.xy = saturate(r2.xy + r6.xy); r2.xy = cb0[30].zz * r2.xy; r9.xyzw = t5.Sample(s5_s, r2.xy).xyzw; r2.xy = r2.zw * float2(-0.5,-0.5) + r6.xy; r2.xy = saturate(float2(0.800000012,0.800000012) + r2.xy); r2.xy = cb0[30].zz * r2.xy; r2.xyzw = t5.Sample(s5_s, r2.xy).xyzw; r2.xyzw = r9.xyzw + r2.xyzw; r2.xyzw = min(float4(0.100000001,0.100000001,0.100000001,0.100000001), r2.xyzw); r2.xyzw = r6.xyzw + r2.xyzw; r0.w = dot(r8.xy, r8.xy); r0.w = rsqrt(r0.w); r6.xy = r8.xy * r0.ww; r6.zw = r6.xy * r0.zz; r6.zw = r6.zw * float2(0.899999976,0.899999976) + v1.xy; r6.zw = frac(r6.zw); r6.zw = float2(0.5,0.5) + -r6.zw; r0.w = dot(r6.zw, r6.zw); r0.w = sqrt(r0.w); r0.w = -r0.w * 3.25626826 + 1; r0.w = max(0, r0.w); r0.w = r0.w * r0.w; r0.xy = r6.xy * r0.zz + r0.xy; r6.xy = saturate(r0.xy); r6.xy = cb0[30].zz * r6.xy; r6.xyzw = t5.Sample(s5_s, r6.xy).xyzw; r8.xy = saturate(r8.zw * r7.xy + r0.xy); r8.xy = cb0[30].zz * r8.xy; r8.xyzw = t5.Sample(s5_s, r8.xy).xyzw; r3.yz = float2(0.0400000028,0.0400000028) * r3.yz; r0.xy = saturate(r3.yz * r7.xy + r0.xy); r0.xy = cb0[30].zz * r0.xy; r9.xyzw = t5.Sample(s5_s, r0.xy).xyzw; r6.xyzw = r8.xyzw + r6.xyzw; r6.xyzw = r6.xyzw + r9.xyzw; r6.xyzw = min(float4(5,5,5,5), r6.xyzw); r0.xyzw = r6.xyzw * r0.wwww; r0.xyzw = r0.xyzw * float4(0.200000003,0.200000003,0.200000003,0.200000003) + r2.xyzw; r2.x = -1 + r3.x; r2.x = r2.x * 0.75 + 1; r2.x = cb0[39].y * r2.x; r0.xyzw = r2.xxxx * r0.xyzw; r2.xyz = cb0[39].zzz * r7.xyz; r2.w = 0; r2.xyzw = float4(1,1,1,1) + r2.xyzw; r1.xyzw = r0.xyzw * r2.xyzw + r1.xyzw; r2.x = saturate(r5.w); r2.xy = float2(1.10000002,1.5) * r2.xx; r2.x = min(1, r2.x); r2.x = 1 + -r2.x; r3.xyzw = r2.xxxx * r1.xyzw; // Scene color (still HDR here, non tonemapped) #if _EEA5578D // HDR r0.xyzw = float4(0.25,0.25,0.25,0.25) * r0.xyzw; r0.xyzw = r5.xyzw * float4(2,2,2,4) + r0.xyzw; // r5 seems to be the UI r0.xyzw = -r1.xyzw * r2.xxxx + r0.xyzw; r0.xyzw = r2.yyyy * r0.xyzw + r3.xyzw; r1.x = dot(r0.xyz, float3(0.272228986,0.674081981,0.0536894985)); r1.yzw = r0.xyz * r4.xyz; r0.xyz = r1.yzw * cb0[50].www + r0.xyz; r1.yzw = cb0[45].xxx * r0.xyz; r1.yzw = r1.yzw * float3(1.38888896,1.38888896,1.38888896) + float3(0.0479959995,0.0479959995,0.0479959995); r1.yzw = log2(r1.yzw); r1.yzw = saturate(r1.yzw * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); r1.yzw = cb0[42].zzz * r1.yzw; r2.x = 0.5 * cb0[42].y; r1.yzw = r1.yzw * cb0[42].yyy + r2.xxx; r3.xyzw = t8.Sample(s8_s, r1.yzw).xyzw; r0.xyz = cb0[45].xxx * r0.xyz; r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); r0.xyz = log2(r0.xyz); r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); r0.xyz = cb0[42].zzz * r0.xyz; r0.xyz = r0.xyz * cb0[42].yyy + r2.xxx; r2.xyzw = t8.Sample(s8_s, r0.xyz).xyzw; r0.x = dot(r3.xyz, float3(0.212672904,0.715152204,0.0721750036)); r0.y = saturate(dot(r3.xyz, float3(1,0.670000017,0.5))); r0.y = r0.y + r0.y; r0.x = r0.x * r0.x; r0.x = min(1, r0.x); r0.xyz = r0.xxx * r0.yyy + r2.xyz; r1.yzw = r1.xxx + -r0.xyz; r1.yzw = r1.yzw * float3(0.100000001,0.100000001,0.100000001) + r0.xyz; r2.x = 0.25 * cb0[44].x; // Might be HDR user brightness scaling? But likely not. r2.x = max(1, r2.x); r2.yzw = float3(30,30,30) * r0.xyz; r2.y = saturate(dot(r2.yzw, float3(0.212672904,0.715152204,0.0721750036))); r2.z = r2.y * -2 + 3; r2.y = r2.y * r2.y; r2.y = r2.z * r2.y; r3.xyz = r0.xyz * r0.xyz; r3.xyz = cb0[44].www * r3.xyz; r3.xyz = r0.xyz * cb0[44].yyy + r3.xyz; r2.xzw = r2.xxx * r0.xyz; r2.xyz = r2.xzw * r2.yyy; r2.xyz = r2.xyz * cb0[44].zzz + r3.xyz; r0.xyz = r1.yzw * r0.xyz; r0.xyz = r0.xyz * cb0[44].xxx + r2.xyz; r1.y = cmp(cb0[50].y < 0.5); if (r1.y != 0) { r1.yz = -cb0[48].xy + v1.xy; r2.yz = cb0[49].xx * abs(r1.zy); r1.y = cb0[26].x / cb0[26].y; // Aspect ratio r1.y = -1 + r1.y; r1.y = cb0[49].w * r1.y + 1; r2.x = r2.z * r1.y; r2.xy = saturate(r2.xy); r1.yz = log2(r2.xy); r1.yz = cb0[49].zz * r1.yz; r1.yz = exp2(r1.yz); r1.y = dot(r1.yz, r1.yz); r1.y = 1 + -r1.y; r1.y = max(0, r1.y); r1.y = log2(r1.y); r1.y = cb0[49].y * r1.y; r1.y = exp2(r1.y); r1.z = r1.y * r1.y; r1.w = r1.z * r1.x; r2.xyz = -r1.zzz * r1.xxx + r0.xyz; r1.xzw = r1.yyy * r2.xyz + r1.www; r0.w = r0.w * cb0[45].x + -1; r2.w = r1.y * r0.w + 1; } else { r3.xyz = r0.xyz * cb0[47].xyz + -r0.xyz; r1.xzw = cb0[50].xxx * r3.xyz + r0.xyz; r2.w = 1; } r0.xy = v1.xy * cb0[35].xy + cb0[35].zw; // ZW are some jittery 0-1 thing r0.xyzw = t0.Sample(s0_s, r0.xy).xyzw; r0.x = r0.w * 2 + -1; r0.y = saturate(r0.x * 3.40282347e+038 + 0.5); r0.y = r0.y * 2 + -1; r0.x = 1 + -abs(r0.x); r0.x = sqrt(r0.x); r0.x = 1 + -r0.x; r0.x = r0.y * r0.x; r0.yzw = float3(12.9200001,12.9200001,12.9200001) * r1.xzw; r3.xyz = max(float3(1.1920929e-007,1.1920929e-007,1.1920929e-007), abs(r1.xzw)); r3.xyz = log2(r3.xyz); r3.xyz = float3(0.416666657,0.416666657,0.416666657) * r3.xyz; r3.xyz = exp2(r3.xyz); r3.xyz = r3.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); r1.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r1.xzw); r0.yzw = r1.xyz ? r0.yzw : r3.xyz; r0.xyz = r0.xxx * float3(0.015625,0.015625,0.015625) + r0.yzw; r1.xyz = float3(0.0773993805,0.0773993805,0.0773993805) * r0.xyz; r3.xyz = float3(0.0549999997,0.0549999997,0.0549999997) + r0.xyz; r3.xyz = float3(0.947867334,0.947867334,0.947867334) * r3.xyz; r3.xyz = max(float3(1.1920929e-007,1.1920929e-007,1.1920929e-007), abs(r3.xyz)); r3.xyz = log2(r3.xyz); r3.xyz = float3(2.4000001,2.4000001,2.4000001) * r3.xyz; r3.xyz = exp2(r3.xyz); r0.xyz = cmp(float3(0.0404499993,0.0404499993,0.0404499993) >= r0.xyz); r2.xyz = r0.xyz ? r1.xyz : r3.xyz; o0.xyzw = r2.xyzw; #elif _45B1DBE4 // SDR r5.xyzw = r5.xyzw + r5.xyzw; r0.xyzw = r0.xyzw * float4(0.25,0.25,0.25,0.25) + r5.xyzw; r0.xyzw = -r1.xyzw * r2.xxxx + r0.xyzw; r0.xyzw = r2.yyyy * r0.xyzw + r3.xyzw; r1.xyz = r0.xyz * r4.xyz; r1.xyz = r1.xyz * cb0[50].www + r0.xyz; r1.xyz = cb0[45].xxx * r1.xyz; r1.xyz = r1.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); r1.xyz = log2(r1.xyz); r1.xyz = saturate(r1.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); r1.xyz = cb0[42].zzz * r1.xyz; r1.w = 0.5 * cb0[42].y; r1.xyz = r1.xyz * cb0[42].yyy + r1.www; r1.xyzw = t8.Sample(s8_s, r1.xyz).xyzw; r1.w = cmp(cb0[50].y < 0.5); if (r1.w != 0) { r0.x = dot(r0.xyz, float3(0.272228986,0.674081981,0.0536894985)); r0.yz = -cb0[48].xy + v1.xy; r2.yz = cb0[49].xx * abs(r0.zy); r0.y = cb0[26].x / cb0[26].y; // Aspect ratio r0.y = -1 + r0.y; r0.y = cb0[49].w * r0.y + 1; r2.x = r2.z * r0.y; r2.xy = saturate(r2.xy); r0.yz = log2(r2.xy); r0.yz = cb0[49].zz * r0.yz; r0.yz = exp2(r0.yz); r0.y = dot(r0.yz, r0.yz); r0.y = 1 + -r0.y; r0.y = max(0, r0.y); r0.y = log2(r0.y); r0.y = cb0[49].y * r0.y; r0.y = exp2(r0.y); r0.z = r0.y * r0.y; r1.w = r0.z * r0.x; r2.xyz = -r0.zzz * r0.xxx + r1.xyz; r2.xyz = r0.yyy * r2.xyz + r1.www; r0.x = r0.w * cb0[45].x + -1; r0.w = r0.y * r0.x + 1; } else { r3.xyz = r1.xyz * cb0[47].xyz + -r1.xyz; r2.xyz = cb0[50].xxx * r3.xyz + r1.xyz; r0.w = 1; } r1.xy = v1.xy * cb0[35].xy + cb0[35].zw; // ZW are some jittery 0-1 thing r1.xyzw = t0.Sample(s0_s, r1.xy).xyzw; r1.x = r1.w * 2 + -1; r1.y = saturate(r1.x * 3.40282347e+038 + 0.5); r1.y = r1.y * 2 + -1; r1.x = 1 + -abs(r1.x); r1.x = sqrt(r1.x); r1.x = 1 + -r1.x; r1.x = r1.y * r1.x; r1.yzw = float3(12.9200001,12.9200001,12.9200001) * r2.xyz; r3.xyz = max(float3(1.1920929e-007,1.1920929e-007,1.1920929e-007), abs(r2.xyz)); r3.xyz = log2(r3.xyz); r3.xyz = float3(0.416666657,0.416666657,0.416666657) * r3.xyz; r3.xyz = exp2(r3.xyz); r3.xyz = r3.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); r2.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r2.xyz); r1.yzw = r2.xyz ? r1.yzw : r3.xyz; r1.xyz = r1.xxx * float3(0.015625,0.015625,0.015625) + r1.yzw; r2.xyz = float3(0.0773993805,0.0773993805,0.0773993805) * r1.xyz; r3.xyz = float3(0.0549999997,0.0549999997,0.0549999997) + r1.xyz; r3.xyz = float3(0.947867334,0.947867334,0.947867334) * r3.xyz; r3.xyz = max(float3(1.1920929e-007,1.1920929e-007,1.1920929e-007), abs(r3.xyz)); r3.xyz = log2(r3.xyz); r3.xyz = float3(2.4000001,2.4000001,2.4000001) * r3.xyz; r3.xyz = exp2(r3.xyz); r1.xyz = cmp(float3(0.0404499993,0.0404499993,0.0404499993) >= r1.xyz); r0.xyz = r1.xyz ? r2.xyz : r3.xyz; o0.xyzw = r0.xyzw; #endif }