erState __s0 : register(s0); #line 30 static const __sampler2D V__NV__ColorInput = { __V__NV__ColorInputTex, __s0 }; #line 31 static const __sampler2D V__NV__DepthInput = { __V__NV__DepthInputTex, __s0 }; #line 56 float F__NV__GetLinearizedDepth( #line 56 in float2 uv) { #line 58 float _18 = 1.00000000e+00 - uv.y; #line 58 float _20 = g_sldDepthInvertY ? _18 : uv.y; #line 58 uv[1] = _20; #line 59 float4 _25 = float4(uv.x, uv.y, 0.00000000e+00, 0.00000000e+00); #line 59 float4 _26 = V__NV__DepthInput.t.SampleLevel(V__NV__DepthInput.s, _25.xy, _25.w); #line 59 float depth = _26.x; #line 60 float _30 = 1.00000000e+00 - depth; #line 60 float _31 = g_sldDepthInvertZ ? _30 : depth; #line 60 depth = _31; #line 65 float _33 = depth * 9.99000000e+02; #line 65 float _35 = 1.00000000e+03 - _33; #line 65 float _36 = depth / _35; #line 65 depth = _36; return depth; } #line 71 float F__NV__GetLuma( #line 71 in float3 color) { #line 74 float _41 = dot(float3(2.98999995e-01, 5.87000012e-01, 1.14000000e-01), color); return _41; } #line 78 struct S__VSOut { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; }; #line 84 S__VSOut F__VSMain( #line 84 in uint vid : SV_VERTEXID) { #line 86 S__VSOut o = (S__VSOut)0; #line 87 bool _49 = vid == 2; #line 87 float _52 = _49 ? 2.00000000e+00 : 0.00000000e+00; #line 87 o.uv[0] = _52; #line 88 bool _54 = vid == 1; #line 88 float _57 = _54 ? 2.00000000e+00 : 0.00000000e+00; #line 88 o.uv[1] = _57; #line 89 float2 _60 = o.uv * float2(2.00000000e+00, -2.00000000e+00); #line 89 float2 _62 = _60 + float2(-1.00000000e+00, 1.00000000e+00); #line 89 float4 _67 = float4(_62.x, _62.y, 0.00000000e+00, 1.00000000e+00); #line 89 o.pos = _67; return o; } #line 93 void F__VSMainOut( #line 93 in uint vid : SV_VERTEXID, #line 93 out float4 position : SV_POSITION, #line 93 out float2 texcoord : TEXCOORD0) { #line 95 uint _73; #line 95 _73 = vid; #line 95 S__VSOut _74 = F__VSMain(_73); #line 95 S__VSOut o_75 = _74; #line 96 position = o_75.pos; #line 97 texcoord = o_75.uv; return; } #line 80 "BeautifyAO.fx" Texture2D __V__MXAO_ColorTex : register(t4); Texture2D __srgbV__MXAO_ColorTex : register(t5); #line 81 Texture2D __V__MXAO_DepthTex : register(t6); Texture2D __srgbV__MXAO_DepthTex : register(t7); #line 82 Texture2D __V__MXAO_NormalTex : register(t8); Texture2D __srgbV__MXAO_NormalTex : register(t9); #line 84 static const __sampler2D V__sMXAO_ColorTex = { __V__MXAO_ColorTex, __s0 }; #line 85 static const __sampler2D V__sMXAO_DepthTex = { __V__MXAO_DepthTex, __s0 }; #line 86 static const __sampler2D V__sMXAO_NormalTex = { __V__MXAO_NormalTex, __s0 }; #line 88 Texture2D __V__CommonTex0 : register(t10); Texture2D __srgbV__CommonTex0 : register(t11); #line 89 static const __sampler2D V__sCommonTex0 = { __V__CommonTex0, __s0 }; #line 91 Texture2D __V__CommonTex1 : register(t12); Texture2D __srgbV__CommonTex1 : register(t13); #line 92 static const __sampler2D V__sCommonTex1 = { __V__CommonTex1, __s0 }; #line 104 struct S__MXAO_VSOUT { float4 vpos : SV_POSITION; float2 uv : TEXCOORD0; nointerpolation float samples : TEXCOORD1; nointerpolation float3 uvtoviewADD : TEXCOORD4; nointerpolation float3 uvtoviewMUL : TEXCOORD5; }; #line 113 struct S__BlurData { float4 key; float4 mask; }; #line 119 S__MXAO_VSOUT F__VS_MXAO( #line 119 in uint id : SV_VERTEXID) { #line 121 S__MXAO_VSOUT MXAO = (S__MXAO_VSOUT)0; #line 123 bool _96 = id == 2; #line 123 float _99 = _96 ? 2.00000000e+00 : 0.00000000e+00; #line 123 MXAO.uv[0] = _99; #line 124 bool _101 = id == 1; #line 124 float _104 = _101 ? 2.00000000e+00 : 0.00000000e+00; #line 124 MXAO.uv[1] = _104; #line 126 float2 _107 = MXAO.uv.xy * float2(2.00000000e+00, -2.00000000e+00); #line 126 float2 _109 = _107 + float2(-1.00000000e+00, 1.00000000e+00); #line 126 float4 _114 = float4(_109.x, _109.y, 0.00000000e+00, 1.00000000e+00); #line 126 MXAO.vpos = _114; const int _115[4] = { 16, 24, 32, 64 }; #line 129 int _116[4] = _115; #line 129 MXAO.samples = ((float)_116[MXAO_GLOBAL_SAMPLE_QUALITY_PRESET]); #line 131 MXAO.uvtoviewADD = float3(-1.00000000e+00, -1.00000000e+00, 1.00000000e+00); #line 132 MXAO.uvtoviewMUL = float3(2.00000000e+00, 2.00000000e+00, 0.00000000e+00); return MXAO; } #line 147 float3 F__get_position_from_uv( #line 147 in float2 uv, #line 147 in S__MXAO_VSOUT MXAO) { #line 149 float3 _126 = uv.xyx * MXAO.uvtoviewMUL; #line 149 float3 _128 = _126 + MXAO.uvtoviewADD; #line 149 float2 _129; #line 149 _129 = uv; #line 149 float _130 = F__NV__GetLinearizedDepth(_129); #line 149 float3 _132 = _128 * _130.xxx; #line 149 float3 _134 = _132 * float3(1.00000000e+03, 1.00000000e+03, 1.00000000e+03); return _134; } #line 152 float3 F__get_position_from_uv_mipmapped( #line 152 in float2 uv, #line 152 in S__MXAO_VSOUT MXAO, #line 152 in int miplevel) { #line 154 float3 _142 = uv.xyx * MXAO.uvtoviewMUL; #line 154 float3 _144 = _142 + MXAO.uvtoviewADD; #line 154 float4 _149 = float4(uv.xyx.x, uv.xyx.y, uv.xyx.z, ((float)miplevel)); #line 154 float4 _150 = V__sMXAO_DepthTex.t.SampleLevel(V__sMXAO_DepthTex.s, _149.xy, _149.w); #line 154 float3 _152 = _144 * _150.x.xxx; return _152; } #line 157 void F__spatial_blur_data( #line 157 inout S__BlurData o, #line 157 in __sampler2D inputsampler, #line 157 in float inputscale, #line 157 in float4 uv) { #line 159 float4 _160 = uv * inputscale.xxxx; #line 159 float4 _161 = inputsampler.t.SampleLevel(inputsampler.s, _160.xy, _160.w); #line 159 o.key = _161; #line 160 float4 _162 = V__sMXAO_NormalTex.t.SampleLevel(V__sMXAO_NormalTex.s, uv.xy, uv.w); #line 160 o.mask = _162; #line 161 float3 _165 = o.mask.xyz * float3(2.00000000e+00, 2.00000000e+00, 2.00000000e+00); #line 161 float3 _167 = _165 - float3(1.00000000e+00, 1.00000000e+00, 1.00000000e+00); #line 161 o.mask.xyz = _167; return; } #line 164 float F__compute_spatial_tap_weight( #line 164 in S__BlurData center, #line 164 in S__BlurData tap) { #line 166 float _174 = tap.mask.w - center.mask.w; #line 166 float _175 = abs(_174); #line 166 float _177 = 1.00000000e+00 - _175; #line 166 float _178 = saturate(_177); #line 166 float depth_term = _178; #line 167 float _182 = dot(tap.mask.xyz, center.mask.xyz); #line 167 float _184 = _182 * 1.60000000e+01; #line 167 float _186 = _184 - 1.50000000e+01; #line 167 float _187 = saturate(_186); #line 167 float normal_term = _187; #line 168 float _189 = depth_term * normal_term; return _189; } #line 171 float4 F__blur_filter( #line 171 in S__MXAO_VSOUT MXAO, #line 171 in __sampler2D inputsampler, #line 171 in float inputscale, #line 171 in float radius, #line 171 in int blursteps) { #line 173 float4 _201 = float4(MXAO.uv.x, MXAO.uv.y, 0.00000000e+00, 0.00000000e+00); #line 173 float4 blur_uv = _201; #line 175 S__BlurData center_204 = (S__BlurData)0; #line 175 S__BlurData tap_206 = (S__BlurData)0; #line 176 S__BlurData _207; #line 176 float _208; #line 176 float4 _209; #line 176 _207 = center_204; #line 176 _208 = inputscale; #line 176 _209 = blur_uv; #line 176 F__spatial_blur_data(_207, inputsampler, _208, _209); #line 176 center_204 = _207; #line 178 float4 blursum = center_204.key; #line 179 float4 blursum_noweight = center_204.key; #line 180 float blurweight = 1.00000000e+00; #line 188 float _219 = 1.00000000e+00 / _1.x; #line 188 float _222 = 1.00000000e+00 / _1.y; #line 188 float2 _223 = float2(_219, _222); #line 188 float2 _225 = _223 / inputscale.xx; #line 188 float2 _227 = _225 * radius.xx; #line 188 float2 blur_offsetscale = _227; #line 191 int i = 0; #line 191 bool _236 = i < blursteps; #line 191 [unroll] while (_236) { { const float2 _240[8] = { float2(1.50000000e+00, 5.00000000e-01), float2(-1.50000000e+00, -5.00000000e-01), float2(-5.00000000e-01, 1.50000000e+00), float2(5.00000000e-01, -1.50000000e+00), float2(1.50000000e+00, 2.50000000e+00), float2(-1.50000000e+00, -2.50000000e+00), float2(-2.50000000e+00, 1.50000000e+00), float2(2.50000000e+00, -1.50000000e+00) }; #line 193 float2 _241[8] = _240; #line 193 float2 _243 = _241[i] * blur_offsetscale; #line 193 float2 _245 = MXAO.uv + _243; #line 193 blur_uv.xy = _245; #line 194 S__BlurData _246; #line 194 float _247; #line 194 float4 _248; #line 194 _246 = tap_206; #line 194 _247 = inputscale; #line 194 _248 = blur_uv; #line 194 F__spatial_blur_data(_246, inputsampler, _247, _248); #line 194 tap_206 = _246; #line 196 S__BlurData _250; #line 196 S__BlurData _251; #line 196 _250 = center_204; #line 196 _251 = tap_206; #line 196 float _252 = F__compute_spatial_tap_weight(_250, _251); #line 196 float tap_weight = _252; #line 198 float _254 = blurweight + tap_weight; #line 198 blurweight = _254; #line 199 float4 _257 = tap_206.key.xyzw * tap_weight.xxxx; #line 199 float4 _259 = blursum.xyzw + _257; #line 199 blursum.xyzw = _259; #line 200 float4 _262 = blursum_noweight.xyzw + tap_206.key.xyzw; #line 200 blursum_noweight.xyzw = _262; } int _237 = i; #line 191 int _239 = _237 + 1; #line 191 i = _239; #line 191 _236 = i < blursteps; } #line 203 float4 _265 = blursum.xyzw / blurweight.xxxx; #line 203 blursum.xyzw = _265; #line 204 int _267 = 1 + blursteps; #line 204 float4 _270 = blursum_noweight.xyzw / ((float4)_267.xxxx); #line 204 blursum_noweight.xyzw = _270; #line 206 bool _272 = blurweight < 2.00000000e+00; #line 206 float4 _276 = lerp(blursum.xyzw, blursum_noweight.xyzw, ((float4)_272.xxxx)); return _276; } #line 209 void F__sample_parameter_setup( #line 209 in S__MXAO_VSOUT MXAO, #line 209 in float scaled_depth, #line 209 out float scaled_radius, #line 209 out float falloff_factor) { #line 211 float _284 = 2.50000000e-01 * MXAO_SAMPLE_RADIUS; #line 211 float _286 = scaled_depth + 2.00000000e+00; #line 211 float _288 = MXAO.samples * _286; #line 211 float _289 = _284 / _288; #line 211 scaled_radius = _289; #line 212 float _290 = MXAO_SAMPLE_RADIUS * MXAO_SAMPLE_RADIUS; #line 212 float _292 = -1.00000000e+00 / _290; #line 212 falloff_factor = _292; return; } #line 216 void F__unpack_hdr( #line 216 inout float3 color) { #line 219 float3 _296 = saturate(color); #line 219 color = _296; #line 220 float3 _297 = saturate(color); #line 220 float3 _299 = float3(1.00999999e+00, 1.00999999e+00, 1.00999999e+00) - _297; #line 220 float3 _300 = rcp(_299); #line 220 float3 _301 = color * _300; #line 220 color = _301; return; } #line 223 void F__pack_hdr( #line 223 inout float3 color) { #line 225 float3 _306 = float3(1.00999999e+00, 1.00999999e+00, 1.00999999e+00) * color; #line 225 float3 _308 = color + float3(1.00000000e+00, 1.00000000e+00, 1.00000000e+00); #line 225 float3 _309 = rcp(_308); #line 225 float3 _310 = _306 * _309; #line 225 color = _310; #line 227 float3 _311 = saturate(color); #line 227 color = _311; return; } #line 234 void F__PS_InputBufferSetup( #line 234 in S__MXAO_VSOUT MXAO, #line 234 out float4 color : SV_TARGET0, #line 234 out float4 depth : SV_TARGET1, #line 234 out float4 normal : SV_TARGET2) { #line 236 float _320 = 1.00000000e+00 / _1.x; #line 236 float _323 = 1.00000000e+00 / _1.y; #line 236 float2 _324 = float2(_320, _323); #line 236 float3 _328 = float3(_324.x, _324.y, 0.00000000e+00); #line 236 float3 single_pixel_offset = _328; #line 238 float2 _330; #line 238 S__MXAO_VSOUT _331; #line 238 _330 = MXAO.uv; #line 238 _331 = MXAO; #line 238 float3 _333 = F__get_position_from_uv(_330, _331); #line 238 float3 position_334 = _333; #line 239 float3 _335 = -position_334; #line 239 float2 _338 = MXAO.uv + single_pixel_offset.xz; #line 239 float2 _339; #line 239 S__MXAO_VSOUT _340; #line 239 _339 = _338; #line 239 _340 = MXAO; #line 239 float3 _341 = F__get_position_from_uv(_339, _340); #line 239 float3 _342 = _335 + _341; #line 239 float3 position_delta_x1 = _342; #line 240 float2 _346 = MXAO.uv - single_pixel_offset.xz; #line 240 float2 _347; #line 240 S__MXAO_VSOUT _348; #line 240 _347 = _346; #line 240 _348 = MXAO; #line 240 float3 _349 = F__get_position_from_uv(_347, _348); #line 240 float3 _350 = position_334 - _349; #line 240 float3 position_delta_x2 = _350; #line 241 float3 _352 = -position_334; #line 241 float2 _355 = MXAO.uv + single_pixel_offset.zy; #line 241 float2 _356; #line 241 S__MXAO_VSOUT _357; #line 241 _356 = _355; #line 241 _357 = MXAO; #line 241 float3 _358 = F__get_position_from_uv(_356, _357); #line 241 float3 _359 = _352 + _358; #line 241 float3 position_delta_y1 = _359; #line 242 float2 _363 = MXAO.uv - single_pixel_offset.zy; #line 242 float2 _364; #line 242 S__MXAO_VSOUT _365; #line 242 _364 = _363; #line 242 _365 = MXAO; #line 242 float3 _366 = F__get_position_from_uv(_364, _365); #line 242 float3 _367 = position_334 - _366; #line 242 float3 position_delta_y2 = _367; #line 244 float _370 = abs(position_delta_x1.z); #line 244 float _372 = abs(position_delta_x2.z); #line 244 bool _373 = _370 > _372; #line 244 float3 _375 = lerp(position_delta_x1, position_delta_x2, ((float3)_373.xxx)); #line 244 position_delta_x1 = _375; #line 245 float _377 = abs(position_delta_y1.z); #line 245 float _379 = abs(position_delta_y2.z); #line 245 bool _380 = _377 > _379; #line 245 float3 _382 = lerp(position_delta_y1, position_delta_y2, ((float3)_380.xxx)); #line 245 position_delta_y1 = _382; #line 247 float _385 = position_delta_x1.z * position_delta_x1.z; #line 247 float _388 = position_delta_x2.z * position_delta_x2.z; #line 247 float _389 = _385 - _388; #line 247 float _390 = abs(_389); #line 248 float _393 = position_delta_y1.z * position_delta_y1.z; #line 248 float _396 = position_delta_y2.z * position_delta_y2.z; #line 248 float _397 = _393 - _396; #line 248 float _398 = abs(_397); #line 247 float _399 = _390 + _398; #line 247 float deltaz = _399; #line 250 float3 _401 = cross(position_delta_y1, position_delta_x1); #line 250 float3 _402 = normalize(_401); #line 250 float3 _404 = _402 * float3(5.00000000e-01, 5.00000000e-01, 5.00000000e-01); #line 250 float3 _406 = _404 + float3(5.00000000e-01, 5.00000000e-01, 5.00000000e-01); #line 250 float4 _410 = float4(_406.x, _406.y, _406.z, deltaz); #line 250 normal = _410; #line 251 float4 _412 = V__NV__ColorInput.t.Sample(V__NV__ColorInput.s, MXAO.uv); #line 251 color = _412; #line 252 float2 _413; #line 252 _413 = MXAO.uv; #line 252 float _415 = F__NV__GetLinearizedDepth(_413); #line 252 float _417 = _415 * 1.00000000e+03; #line 252 depth = _417.xxxx; return; } #line 255 void F__PS_AmbientObscurance( #line 255 in S__MXAO_VSOUT MXAO, #line 255 out float4 color : SV_TARGET0) { #line 257 float2 _423; #line 257 S__MXAO_VSOUT _424; #line 257 int _425; #line 257 _423 = MXAO.uv; #line 257 _424 = MXAO; #line 257 _425 = 0; #line 257 float3 _428 = F__get_position_from_uv_mipmapped(_423, _424, _425); #line 257 float3 position_429 = _428; #line 258 float4 _431 = V__sMXAO_NormalTex.t.Sample(V__sMXAO_NormalTex.s, MXAO.uv); #line 258 float3 _434 = _431.xyz * float3(2.00000000e+00, 2.00000000e+00, 2.00000000e+00); #line 258 float3 _436 = _434 - float3(1.00000000e+00, 1.00000000e+00, 1.00000000e+00); #line 258 float3 normal_437 = _436; #line 260 float2 _440 = MXAO.vpos.xy % float2(4.00000000e+00, 4.00000000e+00); #line 260 float2 _442 = _440 + float2(1.00000001e-01, 1.00000001e-01); #line 260 float2 _443 = floor(_442); #line 260 float _445 = dot(_443, float2(6.25000000e-02, 2.50000000e-01)); #line 260 float _447 = _445 + 6.25000000e-02; #line 260 float sample_jitter = _447; #line 261 float _451 = position_429.z / 1.00000000e+03; #line 261 float linear_depth = _451; #line 262 float3 _454 = normal_437 * linear_depth.xxx; #line 262 float3 _455 = position_429 + _454; #line 262 position_429 = _455; #line 264 float scaled_radius_457 = 0.00000000e+00; #line 265 float falloff_factor_459 = 0.00000000e+00; #line 266 S__MXAO_VSOUT _460; #line 266 float _461; #line 266 float _462; #line 266 float _463; #line 266 _460 = MXAO; #line 266 _461 = position_429.z; #line 266 F__sample_parameter_setup(_460, _461, _462, _463); #line 266 scaled_radius_457 = _462; #line 266 falloff_factor_459 = _463; #line 268 float2 tap_uv = float2(0.00000000e+00, 0.00000000e+00); #line 268 float2 sample_dir = float2(0.00000000e+00, 0.00000000e+00); #line 269 float _471 = 3.83994102e+01 * sample_jitter; #line 269 float _472; #line 269 float _473; #line 269 _472 = sin(_471), _473 = cos(_471); #line 269 sample_dir[0] = _472; #line 269 sample_dir[1] = _473; #line 270 float2 _476 = sample_dir * scaled_radius_457.xx; #line 270 sample_dir = _476; #line 272 color = float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 275 int i_479 = 0; #line 275 bool _487 = ((float)i_479) < MXAO.samples; #line 275 [loop] while (_487) { { #line 277 float _493 = 1.00000000e+00 / _1.y; #line 277 float _495 = ((float)((int)_1.x)) * _493; #line 277 float2 _497 = float2(1.00000000e+00, _495); #line 277 float2 _498 = sample_dir * _497; #line 277 float _500 = ((float)i_479) + sample_jitter; #line 277 float2 _502 = _498 * _500.xx; #line 277 float2 _504 = MXAO.uv + _502; #line 277 tap_uv = _504; #line 278 float2 _506 = mul(sample_dir, float2x2(7.64649987e-01, -6.44439995e-01, 6.44439995e-01, 7.64649987e-01)); #line 278 sample_dir = _506; #line 280 float _508 = scaled_radius_457 * ((float)i_479); #line 280 float _510 = _508 * 2.00000000e+01; #line 280 float _511 = saturate(_510); #line 280 float _513 = _511 * 3.00000000e+00; #line 280 float sample_mip = _513; #line 282 float3 _515 = -position_429; #line 282 float _517 = sample_mip + 0.00000000e+00; #line 282 float2 _518; #line 282 S__MXAO_VSOUT _519; #line 282 int _520; #line 282 _518 = tap_uv; #line 282 _519 = MXAO; #line 282 _520 = ((int)_517); #line 282 float3 _522 = F__get_position_from_uv_mipmapped(_518, _519, _520); #line 282 float3 _523 = _515 + _522; #line 282 float3 delta_v = _523; #line 283 float _525 = dot(delta_v, delta_v); #line 283 float v2 = _525; #line 284 float _527 = dot(delta_v, normal_437); #line 284 float _528 = rsqrt(v2); #line 284 float _529 = _527 * _528; #line 284 float vn = _529; #line 286 float _531 = falloff_factor_459 * v2; #line 286 float _533 = 1.00000000e+00 + _531; #line 286 float _534 = saturate(_533); #line 286 float _536 = vn - 2.00000003e-01; #line 286 float _537 = saturate(_536); #line 286 float _538 = _534 * _537; #line 286 float sample_ao = _538; #line 289 bool _544 = sample_ao > 1.00000001e-01; #line 289 [branch] if (_544) { #line 291 float _546 = sample_mip + 2.00000000e+00; #line 291 float4 _550 = float4(tap_uv.x, tap_uv.y, 0.00000000e+00, _546); #line 291 float4 _551 = V__sMXAO_ColorTex.t.SampleLevel(V__sMXAO_ColorTex.s, _550.xy, _550.w); #line 291 float3 sample_il = _551.xyz; #line 293 float3 _554; #line 293 _554 = sample_il; #line 293 F__unpack_hdr(_554); #line 293 sample_il = _554; #line 294 float _557 = sample_mip + 2.00000000e+00; #line 294 float4 _561 = float4(tap_uv.x, tap_uv.y, 0.00000000e+00, _557); #line 294 float4 _562 = V__sMXAO_NormalTex.t.SampleLevel(V__sMXAO_NormalTex.s, _561.xy, _561.w); #line 294 float3 _565 = _562.xyz * float3(2.00000000e+00, 2.00000000e+00, 2.00000000e+00); #line 294 float3 _567 = _565 - float3(1.00000000e+00, 1.00000000e+00, 1.00000000e+00); #line 294 float3 sample_normal = _567; #line 296 float3 _570 = sample_il * sample_ao.xxx; #line 296 sample_il = _570; #line 297 float3 _571 = -delta_v; #line 297 float3 _573 = _571 * v2.xxx; #line 297 float _574 = dot(sample_normal, _573); #line 297 float _575 = saturate(_574); #line 297 float _577 = 5.00000000e-01 * _575; #line 297 float _579 = 5.00000000e-01 + _577; #line 297 float3 _581 = sample_il * _579.xxx; #line 297 sample_il = _581; #line 299 float4 _585 = float4(sample_il.x, sample_il.y, sample_il.z, sample_ao); #line 299 float4 _586 = color + _585; #line 299 color = _586; } } int _488 = i_479; #line 275 int _490 = _488 + 1; #line 275 i_479 = _490; #line 275 _487 = ((float)i_479) < MXAO.samples; } #line 306 float _589 = 8.00000012e-01 * MXAO.samples; #line 306 float4 _591 = color / _589.xxxx; #line 306 float4 _593 = _591 * float4(2.00000000e+00, 2.00000000e+00, 2.00000000e+00, 2.00000000e+00); #line 306 float4 _594 = saturate(_593); #line 306 color = _594; #line 308 float3 _595; #line 308 _595 = color.xyz; #line 308 F__pack_hdr(_595); #line 308 color.xyz = _595; #line 309 color = color.xyzw; #line 310 float4 _599 = sqrt(color); #line 310 color = _599; return; } #line 313 void F__PS_SpatialFilter1( #line 313 in S__MXAO_VSOUT MXAO, #line 313 out float4 color : SV_TARGET0) { #line 315 S__MXAO_VSOUT _604; #line 315 float _605; #line 315 float _606; #line 315 int _607; #line 315 _604 = MXAO; #line 315 _605 = 1.00000000e+00; #line 315 _606 = 7.50000000e-01; #line 315 _607 = 4; #line 315 float4 _611 = F__blur_filter(_604, V__sCommonTex0, _605, _606, _607); #line 315 color = _611; return; } #line 318 void F__PS_SpatialFilter2( #line 318 in S__MXAO_VSOUT MXAO, #line 318 out float4 color : SV_TARGET0) { #line 320 S__MXAO_VSOUT _616; #line 320 float _617; #line 320 float _618; #line 320 int _619; #line 320 _616 = MXAO; #line 320 _617 = 1.00000000e+00; #line 320 _618 = 1.00000000e+00; #line 320 _619 = 8; #line 320 float4 _623 = F__blur_filter(_616, V__sCommonTex1, _617, _618, _619); #line 320 float4 ssil_ssao = _623; #line 321 float4 _625 = ssil_ssao * ssil_ssao; #line 321 ssil_ssao = _625; #line 322 float4 _627 = V__sMXAO_ColorTex.t.Sample(V__sMXAO_ColorTex.s, MXAO.uv); #line 322 color = _627; #line 324 float3 _628; #line 324 _628 = color.xyz; #line 324 F__unpack_hdr(_628); #line 324 color.xyz = _628; #line 325 float3 _631; #line 325 _631 = ssil_ssao.xyz; #line 325 F__unpack_hdr(_631); #line 325 ssil_ssao.xyz = _631; #line 327 float3 _636 = color.xyz + float3(9.99999975e-06, 9.99999975e-06, 9.99999975e-06); #line 327 float3 _637 = normalize(_636); #line 327 float3 _640 = ssil_ssao.xyz + float3(9.99999975e-06, 9.99999975e-06, 9.99999975e-06); #line 327 float3 _641 = normalize(_640); #line 327 float _642 = distance(_637, _641); #line 327 float similarity = _642; #line 328 float _645 = similarity * 3.00000000e+00; #line 328 float _646 = saturate(_645); #line 328 similarity = _646; #line 329 float _649 = dot(ssil_ssao.xyz, float3(3.33299994e-01, 3.33299994e-01, 3.33299994e-01)); #line 329 float _651 = similarity * 5.00000000e-01; #line 329 float _653 = _651 + 5.00000000e-01; #line 329 float _654 = saturate(_653); #line 329 float3 _658 = lerp(_649.xxx, ssil_ssao.xyz, _654.xxx); #line 329 ssil_ssao.xyz = _658; #line 331 float2 _659; #line 331 _659 = MXAO.uv; #line 331 float _661 = F__NV__GetLinearizedDepth(_659); #line 331 float _662 = -_661; #line 331 float _663 = MXAO_FADE_DEPTH * MXAO_FADE_DEPTH; #line 331 float _665 = _663 * 8.00000000e+00; #line 331 float _667 = _665 + 1.00000005e-03; #line 331 float _668 = rcp(_667); #line 331 float _669 = _662 * _668; #line 331 float _670 = exp(_669); #line 331 float fade = _670; #line 332 float4 _673 = ssil_ssao * fade.xxxx; #line 332 ssil_ssao = _673; #line 334 float3 _676 = ssil_ssao.xyz * MXAO_SSIL_AMOUNT.xxx; #line 334 float3 _678 = _676 * MXAO_SSIL_AMOUNT.xxx; #line 334 float3 _680 = _678 * float3(1.28000000e+02, 1.28000000e+02, 1.28000000e+02); #line 334 float3 _682 = float3(1.00000000e+00, 1.00000000e+00, 1.00000000e+00) + _680; #line 334 float3 _684 = color.xyz * _682; #line 334 color.xyz = _684; #line 335 float _686 = ssil_ssao.w * MXAO_SSAO_AMOUNT; #line 335 float _688 = _686 * 3.20000000e+01; #line 335 float _690 = 1.00000000e+00 + _688; #line 335 float3 _693 = color.xyz / _690.xxx; #line 335 color.xyz = _693; #line 336 float3 _694; #line 336 _694 = color.xyz; #line 336 F__pack_hdr(_694); #line 336 color.xyz = _694; #line 337 color[3] = 1.00000000e+00; return; }