1+ #include "../../common.hlsl"
2+
3+ Texture2D <float4 > t0 : register (t0);
4+ cbuffer cb0 : register (b0){
5+ float4 cb0[147 ];
6+ }
7+
8+ // Songs of Silence
9+
10+ void main (
11+ float4 v0 : SV_POSITION0,
12+ float2 v1 : TEXCOORD0 ,
13+ out float4 o0 : SV_Target0 )
14+ {
15+ float4 r0,r1,r2,r3,r4,r5,r6,r7,r8;
16+ uint4 bitmask, uiDest;
17+ float4 fDest;
18+
19+ r0.zw = float2 (0 ,0 );
20+ r1.xy = cb0[136 ].xy * v1.xy;
21+ r1.xy = (int2 )r1.xy;
22+ r2.xyzw = (int4 )r1.xyxy + int4 (0 ,-1 ,-1 ,0 );
23+ r0.xy = r2.zw;
24+ r0.xyz = t0.Load (r0.xyz).xyz;
25+ r3.xyzw = (int4 )r1.xyxy + int4 (0 ,1 ,1 ,0 );
26+ r4.xy = r3.zw;
27+ r4.zw = float2 (0 ,0 );
28+ r4.xyz = t0.Load (r4.xyz).xyz;
29+ r2.zw = float2 (0 ,0 );
30+ r2.xyz = t0.Load (r2.xyz).xyz;
31+ r3.zw = float2 (0 ,0 );
32+ r3.xyz = t0.Load (r3.xyz).xyz;
33+ r1.zw = float2 (0 ,0 );
34+ r1.xyz = t0.Load (r1.xyz).xyz;
35+ if (injectedData.toneMapType >= 2.f ) {
36+ r0.xyz /= (injectedData.toneMapPeakNits / injectedData.toneMapGameNits);
37+ r4.xyz /= (injectedData.toneMapPeakNits / injectedData.toneMapGameNits);
38+ r2.xyz /= (injectedData.toneMapPeakNits / injectedData.toneMapGameNits);
39+ r3.xyz /= (injectedData.toneMapPeakNits / injectedData.toneMapGameNits);
40+ r1.xyz /= (injectedData.toneMapPeakNits / injectedData.toneMapGameNits);
41+ } else if (injectedData.toneMapType == 1.f ) {
42+ r0.xyz /= 50.f ;
43+ r4.xyz /= 50.f ;
44+ r2.xyz /= 50.f ;
45+ r3.xyz /= 50.f ;
46+ r1.xyz /= 50.f ;
47+ }
48+ r5.xyz = max (r4.xyz, r0.xyz);
49+ r5.xyz = max (r2.xyz, r5.xyz);
50+ r5.xyz = max (r5.xyz, r3.xyz);
51+ r6.xyz = max (r5.xyz, r1.xyz);
52+ r5.xyz = float3 (4 ,4 ,4 ) * r5.xyz;
53+ r5.xyz = rcp (r5.xyz);
54+ r6.xyz = float3 (1 ,1 ,1 ) + -r6.xyz;
55+ r7.xyz = min (r4.xyz, r0.xyz);
56+ r7.xyz = min (r7.xyz, r2.xyz);
57+ r7.xyz = min (r7.xyz, r3.xyz);
58+ r8.xyz = r7.xyz * float3 (4 ,4 ,4 ) + float3 (-4 ,-4 ,-4 );
59+ r7.xyz = min (r7.xyz, r1.xyz);
60+ r5.xyz = r7.xyz * r5.xyz;
61+ r7.xyz = rcp (r8.xyz);
62+ r6.xyz = r7.xyz * r6.xyz;
63+ r5.xyz = max (r6.xyz, -r5.xyz);
64+ r0.w = max (r5.y, r5.z);
65+ r0.w = max (r5.x, r0.w);
66+ r0.w = min (0 , r0.w);
67+ r0.w = max (-0.1875 , r0.w);
68+ r0.w = cb0[146 ].x * r0.w;
69+ r0.xyz = r0.www * r0.xyz;
70+ r0.xyz = r0.www * r2.xyz + r0.xyz;
71+ r0.xyz = r0.www * r3.xyz + r0.xyz;
72+ r0.xyz = r0.www * r4.xyz + r0.xyz;
73+ r0.w = r0.w * 4 + 1 ;
74+ r0.xyz = r0.xyz + r1.xyz;
75+ r1.x = asfloat (2129764351u - asuint (r0.w));
76+ r0.w = -r1.x * r0.w + 2 ;
77+ r0.w = r1.x * r0.w;
78+ r0.xyz = r0.xyz * r0.www;
79+ if (injectedData.toneMapType >= 2.f ) {
80+ r0.xyz *= (injectedData.toneMapPeakNits / injectedData.toneMapGameNits);
81+ } else if (injectedData.toneMapType == 1.f ) {
82+ r0.xyz *= 50.f ;
83+ }
84+ if (injectedData.countOld == injectedData.countNew) {
85+ r0.xyz = PostToneMapScale (r0.xyz);
86+ }
87+ o0.xyz = r0.xyz;
88+ o0.w = 1 ;
89+ return ;
90+ }
0 commit comments