1
+ #include "./shared.h"
2
+
3
+ cbuffer _Globals : register (b0)
4
+ {
5
+ float LayerLighting_hlsl_PSMain015108167936257073_54bits : packoffset (c0) = {0 };
6
+ float4 fogColor : packoffset (c1);
7
+ float3 fogTransform : packoffset (c2);
8
+ float4x3 screenDataToCamera : packoffset (c3);
9
+ float globalScale : packoffset (c6);
10
+ float sceneDepthAlphaMask : packoffset (c6.y);
11
+ float globalOpacity : packoffset (c6.z);
12
+ float distortionBufferScale : packoffset (c6.w);
13
+ float2 wToZScaleAndBias : packoffset (c7);
14
+ float4 screenTransform[2 ] : packoffset (c8);
15
+ float4x4 worldViewProj : packoffset (c10);
16
+ float3 localEyePos : packoffset (c14);
17
+ float4 vertexClipPlane : packoffset (c15);
18
+ float specularPower : packoffset (c16);
19
+ float distortionStrength : packoffset (c16.y);
20
+ float3 specularColor : packoffset (c17);
21
+ float environmentMapLevel : packoffset (c17.w);
22
+ float3 selfIlluminationColor : packoffset (c18);
23
+ float3 subsurfaceColor : packoffset (c19);
24
+ float3 diffuseColor : packoffset (c20);
25
+ float specularCubeMapBrightness : packoffset (c20.w);
26
+ float minAlphaClipValue : packoffset (c21);
27
+ float maxAlphaClipValue : packoffset (c21.y);
28
+ float2 heightMapScaleAndBias : packoffset (c21.z);
29
+ float4x2 diffuseTexTransform : packoffset (c22);
30
+ float4x2 opacityTexTransform : packoffset (c24);
31
+ float4x2 selfIllumTexTransform : packoffset (c26);
32
+
33
+ struct
34
+ {
35
+ float4 ambientVector;
36
+ float4 ambientColorLow;
37
+ float4 ambientControls;
38
+ } Ambient : packoffset (c28);
39
+
40
+ float4 luminanceMapUVPacking : packoffset (c31);
41
+
42
+ struct
43
+ {
44
+ float4 worldVector;
45
+ float4 color;
46
+ float4 channelMask;
47
+ } lights[6 ] : packoffset (c32);
48
+
49
+ row_major float4x4 localToWorld : packoffset (c50);
50
+ row_major float4x4 screenToWorld : packoffset (c54);
51
+ float3 worldEyePos : packoffset (c58);
52
+ }
53
+
54
+ SamplerState mtbSampleSlot1_s : register (s0);
55
+ SamplerState mtbSampleSlot2_s : register (s1);
56
+ SamplerState GaussianLookup_s : register (s2);
57
+ SamplerState s_luminanceMap1_s : register (s3);
58
+ SamplerState s_luminanceMap2_s : register (s4);
59
+ SamplerState s_shadowMask_s : register (s5);
60
+ Texture2D <float4 > mtbSampleSlot2 : register (t0);
61
+ Texture2D <float4 > s_luminanceMap1 : register (t1);
62
+ Texture2D <float4 > s_luminanceMap2 : register (t2);
63
+ Texture2D <float4 > mtbSampleSlot1 : register (t3);
64
+ Texture2D <float4 > s_shadowMask : register (t4);
65
+ Texture2D <float4 > GaussianLookup : register (t5);
66
+
67
+
68
+ // 3Dmigoto declarations
69
+ #define cmp -
70
+
71
+
72
+ void main (
73
+ float4 v0 : TEXCOORD0 ,
74
+ float4 v1 : TEXCOORD1 ,
75
+ float4 v2 : TEXCOORD6 ,
76
+ float4 v3 : TEXCOORD7 ,
77
+ float4 v4 : TEXCOORD3 ,
78
+ float4 v5 : TEXCOORD4 ,
79
+ float4 v6 : TEXCOORD5 ,
80
+ float3 v7 : COLOR0 ,
81
+ float4 v8 : TEXCOORD9 ,
82
+ out float4 o0 : SV_Target0 )
83
+ {
84
+ float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9;
85
+ uint4 bitmask, uiDest;
86
+ float4 fDest;
87
+
88
+ r0.xyz = worldEyePos.xyz + -v8.xyz;
89
+ r0.w = dot (r0.xyz, r0.xyz);
90
+ r0.w = rsqrt (r0.w);
91
+ r0.xyz = r0.xyz * r0.www;
92
+ r1.xyz = -v8.xyz * lights[1 ].worldVector + lights[1 ].worldVector;
93
+ r0.w = dot (r1.xyz, r1.xyz);
94
+ r0.w = rsqrt (r0.w);
95
+ r2.xyz = r1.xyz * r0.www + r0.xyz;
96
+ r1.xyz = r1.xyz * r0.www;
97
+ r0.w = dot (r2.xyz, r2.xyz);
98
+ r0.w = rsqrt (r0.w);
99
+ r2.xyz = r2.xyz * r0.www;
100
+ r3.xyzw = mtbSampleSlot2.Sample (mtbSampleSlot2_s, v0.xy).xyzw;
101
+ r3.xyz = r3.xyz * float3 (2 ,2 ,2 ) + float3 (-1 ,-1 ,-1 );
102
+ r4.xyz = v5.xyz * r3.yyy;
103
+ r3.xyw = r3.xxx * v4.xyz + r4.xyz;
104
+ r3.xyz = r3.zzz * v6.xyz + r3.xyw;
105
+ r0.w = dot (r3.xyz, r3.xyz);
106
+ r0.w = rsqrt (r0.w);
107
+ r3.xyz = r3.xyz * r0.www;
108
+ r0.w = saturate (dot (r3.xyz, r2.xyz));
109
+ r0.w = log2 (r0.w);
110
+ r2.y = 0.001953125 * specularPower;
111
+ r2.x = dot (r3.xyz, r3.xyz);
112
+ r2.xyzw = GaussianLookup.Sample (GaussianLookup_s, r2.xy).xyzw;
113
+ r2.xy = saturate (r2.xy);
114
+ r1.w = 0.00100000005 + r2.x;
115
+ r1.w = r1.w * specularPower + 1. 00000001e-007 ;
116
+ r0.w = r1.w * r0.w;
117
+ r0.w = exp2 (r0.w);
118
+ r2.xzw = -v8.xyz * lights[2 ].worldVector + lights[2 ].worldVector;
119
+ r3.w = dot (r2.xzw, r2.xzw);
120
+ r3.w = rsqrt (r3.w);
121
+ r4.xyz = r2.xzw * r3.www + r0.xyz;
122
+ r2.xzw = r3.www * r2.xzw;
123
+ r2.x = saturate (dot (r2.xzw, r3.xyz));
124
+ r2.z = dot (r4.xyz, r4.xyz);
125
+ r2.z = rsqrt (r2.z);
126
+ r4.xyz = r4.xyz * r2.zzz;
127
+ r2.z = saturate (dot (r3.xyz, r4.xyz));
128
+ r2.z = log2 (r2.z);
129
+ r2.z = r2.z * r1.w;
130
+ r2.z = exp2 (r2.z);
131
+ r4.x = v4.w;
132
+ r4.y = v5.w;
133
+ r4.xyzw = s_luminanceMap1.Sample (s_luminanceMap1_s, r4.xy).xyzw;
134
+ r5.xy = v2.xy / v2.ww;
135
+ r5.xyzw = s_shadowMask.Sample (s_shadowMask_s, r5.xy).xyzw;
136
+ r2.w = saturate (dot (r5.xyzw, lights[2 ].channelMask));
137
+ r2.w = 1 + -r2.w;
138
+ r2.w = saturate (r4.z * r2.w);
139
+ r6.xyz = lights[2 ].color * r2.www;
140
+ r7.xyz = r6.xyz * r2.zzz;
141
+ r2.xzw = r6.xyz * r2.xxx;
142
+ r3.w = saturate (dot (r5.xyzw, lights[1 ].channelMask));
143
+ r3.w = 1 + -r3.w;
144
+ r3.w = saturate (r4.y * r3.w);
145
+ r4.yzw = lights[1 ].color * r3.www;
146
+ r6.xyz = r0.www * r4.yzw + r7.xyz;
147
+ r7.xyz = -v8.xyz * lights[3 ].worldVector + lights[3 ].worldVector;
148
+ r0.w = dot (r7.xyz, r7.xyz);
149
+ r0.w = rsqrt (r0.w);
150
+ r8.xyz = r7.xyz * r0.www + r0.xyz;
151
+ r7.xyz = r7.xyz * r0.www;
152
+ r0.w = saturate (dot (r7.xyz, r3.xyz));
153
+ r3.w = dot (r8.xyz, r8.xyz);
154
+ r3.w = rsqrt (r3.w);
155
+ r7.xyz = r8.xyz * r3.www;
156
+ r3.w = saturate (dot (r3.xyz, r7.xyz));
157
+ r3.w = log2 (r3.w);
158
+ r3.w = r3.w * r1.w;
159
+ r3.w = exp2 (r3.w);
160
+ r6.w = saturate (dot (r5.xyzw, lights[3 ].channelMask));
161
+ r6.w = 1 + -r6.w;
162
+ r4.x = saturate (r6.w * r4.x);
163
+ r7.xyz = lights[3 ].color * r4.xxx;
164
+ r6.xyz = r3.www * r7.xyz + r6.xyz;
165
+ r8.xyz = -v8.xyz * lights[4 ].worldVector + lights[4 ].worldVector;
166
+ r3.w = dot (r8.xyz, r8.xyz);
167
+ r3.w = rsqrt (r3.w);
168
+ r9.xyz = r8.xyz * r3.www + r0.xyz;
169
+ r8.xyz = r8.xyz * r3.www;
170
+ r3.w = saturate (dot (r8.xyz, r3.xyz));
171
+ r4.x = dot (r9.xyz, r9.xyz);
172
+ r4.x = rsqrt (r4.x);
173
+ r8.xyz = r9.xyz * r4.xxx;
174
+ r4.x = saturate (dot (r3.xyz, r8.xyz));
175
+ r4.x = log2 (r4.x);
176
+ r4.x = r4.x * r1.w;
177
+ r4.x = exp2 (r4.x);
178
+ r6.w = saturate (dot (r5.xyzw, lights[4 ].channelMask));
179
+ r5.x = saturate (dot (r5.xyzw, lights[5 ].channelMask));
180
+ r5.x = 1 + -r5.x;
181
+ r5.y = 1 + -r6.w;
182
+ r8.xyzw = s_luminanceMap2.Sample (s_luminanceMap2_s, v7.xy).xyzw;
183
+ r5.xy = saturate (r8.zy * r5.xy);
184
+ r5.xzw = lights[5 ].color * r5.xxx;
185
+ r8.xyz = lights[4 ].color * r5.yyy;
186
+ r6.xyz = r4.xxx * r8.xyz + r6.xyz;
187
+ r9.xyz = -v8.xyz * lights[5 ].worldVector + lights[5 ].worldVector;
188
+ r4.x = dot (r9.xyz, r9.xyz);
189
+ r4.x = rsqrt (r4.x);
190
+ r0.xyz = r9.xyz * r4.xxx + r0.xyz;
191
+ r9.xyz = r9.xyz * r4.xxx;
192
+ r4.x = saturate (dot (r9.xyz, r3.xyz));
193
+ r5.y = dot (r0.xyz, r0.xyz);
194
+ r5.y = rsqrt (r5.y);
195
+ r0.xyz = r5.yyy * r0.xyz;
196
+ r0.x = saturate (dot (r3.xyz, r0.xyz));
197
+ r0.y = saturate (dot (r1.xyz, r3.xyz));
198
+ r1.xyz = r0.yyy * r4.yzw + r2.xzw;
199
+ r0.yzw = r0.www * r7.xyz + r1.xyz;
200
+ r0.yzw = r3.www * r8.xyz + r0.yzw;
201
+ r0.yzw = r4.xxx * r5.xzw + r0.yzw;
202
+ r0.x = log2 (r0.x);
203
+ r0.x = r1.w * r0.x;
204
+ r0.x = exp2 (r0.x);
205
+ r1.xyz = r0.xxx * r5.xzw + r6.xyz;
206
+ r3.xyzw = mtbSampleSlot1.Sample (mtbSampleSlot1_s, v0.xy).xyzw;
207
+ r2.xzw = diffuseColor.xyz * r3.xyz;
208
+ r0.xyz = r2.xzw * r0.yzw;
209
+ r2.xzw = specularColor.xyz * r3.www;
210
+ r2.xzw = r2.xzw * r3.xyz;
211
+ r2.xyz = r2.yyy * r2.xzw;
212
+ r0.xyz = r2.xyz * r1.xyz + r0.xyz;
213
+ r1.xyz = fogColor.xyz + -r0.xyz;
214
+ r0.xyz = v2.zzz * r1.xyz + r0.xyz;
215
+ o0.xyz = globalScale * injectedData.FogAmount * r0.xyz;
216
+ o0.w = globalOpacity * v3.w;
217
+ return ;
218
+ }
0 commit comments