) { #line 58 float _15 = 1.00000000e+00 - uv.y; #line 58 float _17 = g_sldDepthInvertY ? _15 : uv.y; #line 58 uv[1] = _17; #line 59 float4 _22 = float4(uv.x, uv.y, 0.00000000e+00, 0.00000000e+00); #line 59 float4 _23 = V__NV__DepthInput.t.SampleLevel(V__NV__DepthInput.s, _22.xy, _22.w); #line 59 float depth = _23.x; #line 60 float _27 = 1.00000000e+00 - depth; #line 60 float _28 = g_sldDepthInvertZ ? _27 : depth; #line 60 depth = _28; #line 65 float _30 = depth * 9.99000000e+02; #line 65 float _32 = 1.00000000e+03 - _30; #line 65 float _33 = depth / _32; #line 65 depth = _33; return depth; } #line 71 float F__NV__GetLuma( #line 71 in float3 color) { #line 74 float _38 = dot(float3(2.98999995e-01, 5.87000012e-01, 1.14000000e-01), color); return _38; } #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 _46 = vid == 2; #line 87 float _49 = _46 ? 2.00000000e+00 : 0.00000000e+00; #line 87 o.uv[0] = _49; #line 88 bool _51 = vid == 1; #line 88 float _54 = _51 ? 2.00000000e+00 : 0.00000000e+00; #line 88 o.uv[1] = _54; #line 89 float2 _57 = o.uv * float2(2.00000000e+00, -2.00000000e+00); #line 89 float2 _59 = _57 + float2(-1.00000000e+00, 1.00000000e+00); #line 89 float4 _64 = float4(_59.x, _59.y, 0.00000000e+00, 1.00000000e+00); #line 89 o.pos = _64; 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 _70; #line 95 _70 = vid; #line 95 S__VSOut _71 = F__VSMain(_70); #line 95 S__VSOut o_72 = _71; #line 96 position = o_72.pos; #line 97 texcoord = o_72.uv; return; } #line 72 "BeautifyDOF.fx" Texture2D __V__ADOF_FocusTex : register(t4); Texture2D __srgbV__ADOF_FocusTex : register(t5); #line 73 Texture2D __V__ADOF_FocusTexPrev : register(t6); Texture2D __srgbV__ADOF_FocusTexPrev : register(t7); #line 75 static const __sampler2D V__sADOF_FocusTex = { __V__ADOF_FocusTex, __s0 }; #line 76 static const __sampler2D V__sADOF_FocusTexPrev = { __V__ADOF_FocusTexPrev, __s0 }; #line 78 Texture2D __V__CommonTex0 : register(t8); Texture2D __srgbV__CommonTex0 : register(t9); #line 79 static const __sampler2D V__sCommonTex0 = { __V__CommonTex0, __s0 }; #line 81 Texture2D __V__CommonTex1 : register(t10); Texture2D __srgbV__CommonTex1 : register(t11); #line 82 static const __sampler2D V__sCommonTex1 = { __V__CommonTex1, __s0 }; #line 88 struct S__ADOF_VSOUT { float4 vpos : SV_POSITION; float4 uv : TEXCOORD0; }; #line 94 S__ADOF_VSOUT F__VS_ADOF( #line 94 in uint id : SV_VERTEXID) { #line 96 S__ADOF_VSOUT OUT = (S__ADOF_VSOUT)0; #line 98 bool _92 = id == 2; #line 98 float _95 = _92 ? 2.00000000e+00 : 0.00000000e+00; #line 98 OUT.uv[0] = _95; #line 99 bool _97 = id == 1; #line 99 float _100 = _97 ? 2.00000000e+00 : 0.00000000e+00; #line 99 OUT.uv[1] = _100; #line 100 float2 _103 = OUT.uv.xy / float2(1.00000000e+00, 1.00000000e+00); #line 100 OUT.uv.zw = _103; #line 101 float2 _106 = OUT.uv.xy * float2(2.00000000e+00, -2.00000000e+00); #line 101 float2 _108 = _106 + float2(-1.00000000e+00, 1.00000000e+00); #line 101 float4 _113 = float4(_108.x, _108.y, 0.00000000e+00, 1.00000000e+00); #line 101 OUT.vpos = _113; return OUT; } #line 109 float F__GetLinearDepth( #line 109 in float2 coords) { #line 111 float2 _117; #line 111 _117 = coords; #line 111 float _118 = F__NV__GetLinearizedDepth(_117); return _118; } #line 114 float F__CircleOfConfusion( #line 114 in float2 texcoord, #line 114 in bool aggressiveLeakReduction) { #line 116 float2 depthdata = float2(0.00000000e+00, 0.00000000e+00); #line 117 float scenecoc = 0.00000000e+00; #line 119 float2 _127; #line 119 _127 = texcoord.xy; #line 119 float _129 = F__GetLinearDepth(_127); #line 119 depthdata[0] = _129; #line 122 [branch] if (aggressiveLeakReduction) { #line 124 float _135 = 1.00000000e+00 / _1.x; #line 124 float _138 = 1.00000000e+00 / _1.y; #line 124 float2 _139 = float2(_135, _138); #line 124 float3 _143 = float3(_139.xy.x, _139.xy.y, 0.00000000e+00); #line 124 float3 neighbourOffsets = _143; #line 126 float2 _147 = texcoord.xy - neighbourOffsets.xz; #line 126 float2 _148; #line 126 _148 = _147; #line 126 float _149 = F__GetLinearDepth(_148); #line 127 float2 _152 = texcoord.xy + neighbourOffsets.xz; #line 127 float2 _153; #line 127 _153 = _152; #line 127 float _154 = F__GetLinearDepth(_153); #line 128 float2 _157 = texcoord.xy - neighbourOffsets.zy; #line 128 float2 _158; #line 128 _158 = _157; #line 128 float _159 = F__GetLinearDepth(_158); #line 129 float2 _162 = texcoord.xy + neighbourOffsets.zy; #line 129 float2 _163; #line 129 _163 = _162; #line 129 float _164 = F__GetLinearDepth(_163); #line 126 float4 _165 = float4(_149, _154, _159, _164); #line 126 float4 neighbourDepths = _165; #line 131 float _169 = min(neighbourDepths.x, neighbourDepths.y); #line 131 float _172 = min(neighbourDepths.z, neighbourDepths.w); #line 131 float _173 = min(_169, _172); #line 131 float neighbourMin = _173; #line 132 float _176 = min(neighbourMin, depthdata.x); #line 132 float _179 = lerp(_176, depthdata.x, 1.00000005e-03); #line 132 depthdata[0] = _179; } #line 135 float4 _181 = V__sADOF_FocusTex.t.Sample(V__sADOF_FocusTex.s, texcoord.xy); #line 135 depthdata[1] = _181.x; #line 136 float handdepth = depthdata.x; #line 138 float2 _187 = depthdata.xy / float2(5.99999987e-02, 5.99999987e-02); #line 138 float2 _188 = saturate(_187); #line 138 depthdata.xy = _188; #line 141 bool _194 = depthdata.x < depthdata.y; #line 141 [branch] if (_194) { #line 143 float _197 = depthdata.x / depthdata.y; #line 143 float _199 = _197 - 1.00000000e+00; #line 143 scenecoc = _199; #line 144 float _201 = exp2(-1.25000000e+03); #line 144 float _202 = scenecoc * _201; #line 144 scenecoc = _202; } else { #line 148 float _205 = depthdata.x - depthdata.y; #line 148 float _207 = exp2(4.00000000e+00); #line 148 float _209 = depthdata.y * _207; #line 148 float _211 = _209 - depthdata.y; #line 148 float _212 = _205 / _211; #line 148 scenecoc = _212; #line 149 float _213 = saturate(scenecoc); #line 149 scenecoc = _213; } #line 155 bool _215 = handdepth < 3.35299992e-05; #line 155 float _217 = _215 ? 0.00000000e+00 : scenecoc; #line 155 scenecoc = _217; return scenecoc; } #line 161 void F__ShapeRoundness( #line 161 inout float2 sampleOffset, #line 161 in float roundness) { #line 163 float _223 = 1.00000000e+00 - roundness; #line 163 float _224 = dot(sampleOffset, sampleOffset); #line 163 float _225 = rsqrt(_224); #line 163 float _226 = _225 * roundness; #line 163 float _227 = _223 + _226; #line 163 float2 _229 = sampleOffset * _227.xx; #line 163 sampleOffset = _229; return; } #line 166 float2 F__CoC2BlurRadius( #line 166 in float CoC) { #line 168 float _235 = 1.00000000e+00 / _1.y; #line 168 float _237 = ((float)((int)_1.x)) * _235; #line 168 float2 _239 = float2(1.00000000e+00, _237); #line 168 float2 _242 = float2(1.00000000e+00, _239.y); #line 168 float2 _244 = _242 * CoC.xx; #line 168 float2 _246 = _244 * fADOF_BokehIntensity.xx; #line 168 float2 _248 = _246 * float2(1.79999992e-02, 1.79999992e-02); return _248; } #line 175 void F__PS_CopyBackBuffer( #line 175 in S__ADOF_VSOUT IN, #line 175 out float4 color : SV_TARGET0) { #line 177 float4 _254 = V__NV__ColorInput.t.Sample(V__NV__ColorInput.s, IN.uv.xy); #line 177 color = _254; return; } #line 180 void F__PS_ReadFocus( #line 180 in S__ADOF_VSOUT IN, #line 180 out float focus : SV_TARGET0) { #line 182 float scenefocus = 0.00000000e+00; #line 184 float samples = 1.00000000e+01; #line 185 float weightsum = 9.99999997e-07; #line 187 float xcoord = 0.00000000e+00; #line 187 bool _272 = xcoord < samples; #line 187 while (_272) { { #line 188 float ycoord = 0.00000000e+00; #line 188 bool _283 = ycoord < samples; #line 188 while (_283) { { #line 190 float2 _287 = float2(xcoord, ycoord); #line 190 float2 _289 = _287 + float2(5.00000000e-01, 5.00000000e-01); #line 190 float2 _291 = _289 / samples.xx; #line 190 float2 sampleOffset_292 = _291; #line 191 float2 _294 = sampleOffset_292 * float2(2.00000000e+00, 2.00000000e+00); #line 191 float2 _296 = _294 - float2(1.00000000e+00, 1.00000000e+00); #line 191 sampleOffset_292 = _296; #line 193 float _297 = dot(sampleOffset_292, sampleOffset_292); #line 193 float _298 = -_297; #line 193 float _300 = _298 * 4.00000000e+00; #line 193 float _301 = exp2(_300); #line 193 float _303 = 1.20000005e+00 * _301; #line 193 float _304 = saturate(_303); #line 193 float sampleWeight = _304; #line 195 float2 _307 = sampleOffset_292 * float2(3.49999994e-01, 3.49999994e-01); #line 195 sampleOffset_292 = _307; #line 196 float2 _309 = sampleOffset_292 + float2(0.00000000e+00, -1.50000006e-01); #line 196 sampleOffset_292 = _309; #line 198 float2 _311 = sampleOffset_292 * float2(5.00000000e-01, 5.00000000e-01); #line 198 float2 _313 = _311 + float2(5.00000000e-01, 5.00000000e-01); #line 198 float2 _314; #line 198 _314 = _313; #line 198 float _315 = F__GetLinearDepth(_314); #line 198 float tempfocus = _315; #line 199 float _318 = tempfocus + 1.00000005e-03; #line 199 float _319 = rcp(_318); #line 199 float _320 = sampleWeight * _319; #line 199 sampleWeight = _320; #line 201 bool _322 = tempfocus > 3.35299992e-05; #line 201 float _324 = saturate(((float)_322)); #line 201 float _325 = sampleWeight * _324; #line 201 sampleWeight = _325; #line 203 float _326 = tempfocus * sampleWeight; #line 203 float _327 = scenefocus + _326; #line 203 scenefocus = _327; #line 204 float _328 = weightsum + sampleWeight; #line 204 weightsum = _328; } float _284 = ycoord; #line 188 float _286 = _284 + 1.00000000e+00; #line 188 ycoord = _286; #line 188 _283 = ycoord < samples; } } float _273 = xcoord; #line 187 float _275 = _273 + 1.00000000e+00; #line 187 xcoord = _275; #line 187 _272 = xcoord < samples; } #line 206 float _329 = scenefocus / weightsum; #line 206 scenefocus = _329; #line 208 float4 _331 = V__sADOF_FocusTexPrev.t.Sample(V__sADOF_FocusTexPrev.s, float2(5.00000000e-01, 5.00000000e-01)); #line 208 float prevscenefocus = _331.x; #line 209 float _335 = 1.00000000e+00 - fADOF_AutofocusSpeed; #line 209 float _337 = _335 * 1.00000000e+03; #line 209 float _338 = FRAME_TIME / _337; #line 209 float adjustmentspeed = _338; #line 210 bool _340 = prevscenefocus > scenefocus; #line 210 float _343 = _340 ? 2.00000000e+00 : 1.00000000e+00; #line 210 float _344 = adjustmentspeed * _343; #line 210 adjustmentspeed = _344; #line 212 float _345 = saturate(adjustmentspeed); #line 212 float _346 = lerp(prevscenefocus, scenefocus, _345); #line 212 focus = _346; return; } #line 215 void F__PS_CopyFocus( #line 215 in S__ADOF_VSOUT IN, #line 215 out float focus : SV_TARGET0) { #line 217 float4 _352 = V__sADOF_FocusTex.t.Sample(V__sADOF_FocusTex.s, IN.uv.xy); #line 217 focus = _352.x; return; } #line 220 void F__PS_CoC( #line 220 in S__ADOF_VSOUT IN, #line 220 out float4 color : SV_TARGET0) { #line 222 float4 _359 = V__NV__ColorInput.t.Sample(V__NV__ColorInput.s, IN.uv.xy); #line 222 color = _359; #line 224 float _362 = 1.00000000e+00 / _1.x; #line 224 float _365 = 1.00000000e+00 / _1.y; #line 224 float2 _366 = float2(_362, _365); #line 224 float2 _369 = float2(1.50000000e+00, 5.00000000e-01) * _366.xy; #line 225 float _372 = 1.00000000e+00 / _1.x; #line 225 float _375 = 1.00000000e+00 / _1.y; #line 225 float2 _376 = float2(_372, _375); #line 225 float2 _379 = float2(5.00000000e-01, -1.50000000e+00) * _376.xy; #line 226 float _382 = 1.00000000e+00 / _1.x; #line 226 float _385 = 1.00000000e+00 / _1.y; #line 226 float2 _386 = float2(_382, _385); #line 226 float2 _389 = float2(-1.50000000e+00, -5.00000000e-01) * _386.xy; #line 227 float _392 = 1.00000000e+00 / _1.x; #line 227 float _395 = 1.00000000e+00 / _1.y; #line 227 float2 _396 = float2(_392, _395); #line 227 float2 _399 = float2(-5.00000000e-01, 1.50000000e+00) * _396.xy; #line 224 float2 _400[4] = { _369, _379, _389, _399 }; #line 224 float2 sampleOffsets[4] = _400; #line 229 float2 _402; #line 229 _402 = IN.uv.xy; #line 229 float _404 = F__GetLinearDepth(_402); #line 229 float centerDepth = _404; #line 230 float4 sampleCoord = float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 231 float _410 = 1.00000000e+00 / _1.x; #line 231 float _413 = 1.00000000e+00 / _1.y; #line 231 float2 _414 = float2(_410, _413); #line 231 float3 _418 = float3(_414.xy.x, _414.xy.y, 0.00000000e+00); #line 231 float3 neighbourOffsets_419 = _418; #line 232 float4 coccolor = float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 235 int i = 0; #line 235 bool _430 = i < 4; #line 235 [loop] while (_430) { { #line 237 float2 _436 = IN.uv.xy + sampleOffsets[i]; #line 237 sampleCoord.xy = _436; #line 239 float4 _437 = V__NV__ColorInput.t.SampleLevel(V__NV__ColorInput.s, sampleCoord.xy, sampleCoord.w); #line 239 float3 sampleColor = _437.xyz; #line 241 float2 _442 = sampleCoord.xy + neighbourOffsets_419.xz; #line 241 float2 _443; #line 241 _443 = _442; #line 241 float _444 = F__GetLinearDepth(_443); #line 242 float2 _447 = sampleCoord.xy - neighbourOffsets_419.xz; #line 242 float2 _448; #line 242 _448 = _447; #line 242 float _449 = F__GetLinearDepth(_448); #line 243 float2 _452 = sampleCoord.xy + neighbourOffsets_419.zy; #line 243 float2 _453; #line 243 _453 = _452; #line 243 float _454 = F__GetLinearDepth(_453); #line 244 float2 _457 = sampleCoord.xy - neighbourOffsets_419.zy; #line 244 float2 _458; #line 244 _458 = _457; #line 244 float _459 = F__GetLinearDepth(_458); #line 241 float4 _460 = float4(_444, _449, _454, _459); #line 241 float4 sampleDepths = _460; #line 246 float _464 = min(sampleDepths.x, sampleDepths.y); #line 246 float _467 = min(sampleDepths.z, sampleDepths.w); #line 246 float _468 = min(_464, _467); #line 246 float sampleDepthMin = _468; #line 248 float _472 = max(sampleColor.x, sampleColor.y); #line 248 float _474 = max(_472, sampleColor.z); #line 248 float _476 = 1.00000000e+00 + _474; #line 248 float3 _478 = sampleColor / _476.xxx; #line 248 sampleColor = _478; #line 250 float _479 = rcp(centerDepth); #line 250 float _480 = sampleDepthMin * _479; #line 250 float _482 = _480 + 1.00000005e-03; #line 250 float _483 = saturate(_482); #line 250 float sampleWeight_484 = _483; #line 251 float3 _487 = sampleColor.xyz * sampleWeight_484.xxx; #line 251 float4 _491 = float4(_487.x, _487.y, _487.z, sampleWeight_484); #line 251 float4 _492 = coccolor + _491; #line 251 coccolor = _492; } int _431 = i; #line 235 int _433 = _431 + 1; #line 235 i = _433; #line 235 _430 = i < 4; } #line 254 float3 _495 = coccolor.xyz / coccolor.w.xxx; #line 254 coccolor.xyz = _495; #line 255 float _498 = max(coccolor.y, coccolor.z); #line 255 float _500 = max(coccolor.x, _498); #line 255 float _502 = 1.00000000e+00 - _500; #line 255 float3 _505 = coccolor.xyz / _502.xxx; #line 255 coccolor.xyz = _505; #line 257 float _508 = coccolor.w * 8.00000000e+00; #line 257 float _509 = saturate(_508); #line 257 float3 _513 = lerp(color.xyz, coccolor.xyz, _509.xxx); #line 257 color.xyz = _513; #line 258 float2 _514; #line 258 bool _515; #line 258 _514 = IN.uv.xy; #line 258 _515 = true; #line 258 float _518 = F__CircleOfConfusion(_514, _515); #line 258 color[3] = _518; #line 259 float _521 = color.w * 5.00000000e-01; #line 259 float _523 = _521 + 5.00000000e-01; #line 259 float _524 = saturate(_523); #line 259 color[3] = _524; return; } #line 263 void F__unpack_hdr( #line 263 inout float3 color) { #line 265 float3 _528 = saturate(color); #line 265 float3 _530 = float3(1.20000005e+00, 1.20000005e+00, 1.20000005e+00) - _528; #line 265 float3 _531 = rcp(_530); #line 265 float3 _532 = color * _531; #line 265 color = _532; return; } #line 268 void F__pack_hdr( #line 268 inout float3 color) { #line 270 float3 _537 = float3(1.20000005e+00, 1.20000005e+00, 1.20000005e+00) * color; #line 270 float3 _539 = color + float3(1.00000000e+00, 1.00000000e+00, 1.00000000e+00); #line 270 float3 _540 = rcp(_539); #line 270 float3 _541 = _537 * _540; #line 270 color = _541; return; } #line 273 float4 F__PS_DoF_Main( #line 273 in S__ADOF_VSOUT IN) : SV_TARGET0 { #line 275 float _550 = max(IN.uv.z, IN.uv.w); #line 275 bool _552 = _550 > 1.00999999e+00; #line 275 if (_552) { discard; return float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00); } #line 277 float4 BokehSum = float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 277 float4 BokehMax = float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 278 float4 _558 = V__sCommonTex0.t.Sample(V__sCommonTex0.s, IN.uv.zw); #line 278 BokehMax = _558; #line 279 BokehSum = BokehMax; #line 280 float weightSum = 1.00000000e+00; #line 281 float _563 = BokehSum.w * 2.00000000e+00; #line 281 float _565 = _563 - 1.00000000e+00; #line 281 float _566 = abs(_565); #line 281 float CoC_567 = _566; #line 282 float _568; #line 282 _568 = CoC_567; #line 282 float2 _569 = F__CoC2BlurRadius(_568); #line 282 float2 bokehRadiusScaled = _569; #line 283 float2 _573 = IN.vpos.xy % float2(2.00000000e+00, 2.00000000e+00); #line 283 float _575 = dot(_573, float2(1.00000000e+00, 2.00000000e+00)); #line 283 float _577 = _575 * 2.50000000e-01; #line 283 float pixeljitter = _577; #line 284 float _579 = length(bokehRadiusScaled); #line 284 float _582 = 1.00000000e+00 / _1.x; #line 284 float _585 = 1.00000000e+00 / _1.y; #line 284 float2 _586 = float2(_582, _585); #line 284 float _587 = length(_586); #line 284 float _588 = _579 / _587; #line 284 float _590 = _588 / 6.00000000e+00; #line 284 float nRings = _590; #line 285 float _592 = nRings + pixeljitter; #line 285 nRings = _592; #line 287 float _598 = 1.00000000e+00 / _1.x; #line 287 float _601 = 1.00000000e+00 / _1.y; #line 287 float2 _602 = float2(_598, _601); #line 287 float _605 = 2.50000000e-01 * _602.x; #line 287 bool _607 = bokehRadiusScaled.x < _605; #line 287 if (_607) { return BokehSum; } #line 289 float2 _609 = bokehRadiusScaled / nRings.xx; #line 289 bokehRadiusScaled = _609; #line 290 float _610 = CoC_567 / nRings; #line 290 CoC_567 = _610; #line 292 float2x2 offsmat = float2x2(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 293 float4 offset0 = float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 294 float _616; #line 294 float _617; #line 294 _616 = sin(1.04719746e+00), _617 = cos(1.04719746e+00); #line 294 offsmat._m10 = _616; #line 294 offsmat._m11 = _617; #line 295 offsmat._m00 = offsmat._m11; #line 296 float _621 = -offsmat._m10; #line 296 offsmat._m01 = _621; #line 298 float _623 = 6.00000000e+01 * pixeljitter; #line 298 float _624 = radians(_623); #line 298 float _625; #line 298 float _626; #line 298 _625 = sin(_624), _626 = cos(_624); #line 298 offset0[0] = _625; #line 298 offset0[1] = _626; #line 299 float2 _629 = mul(offset0.xy, offsmat); #line 299 offset0.zw = _629; #line 302 int iVertices = 0; #line 302 bool _638 = iVertices < 6; #line 302 bool _640 = iVertices < 10; #line 302 bool _641 = _638 && _640; #line 302 [loop] while (_641) { { #line 305 float iRings = 1.00000000e+00; #line 305 bool _652 = iRings <= nRings; #line 305 bool _654 = iRings < 5.00000000e+01; #line 305 bool _655 = _652 && _654; #line 305 [loop] while (_655) { { #line 308 float iSamplesPerRing = 0.00000000e+00; #line 308 bool _666 = iSamplesPerRing < iRings; #line 308 [loop] while (_666) { { #line 310 float _670 = iSamplesPerRing / iRings; #line 310 float2 _674 = lerp(offset0.xy, offset0.zw, _670.xx); #line 310 float2 sampleOffset_675 = _674; #line 311 float2 _676; #line 311 float _677; #line 311 _676 = sampleOffset_675; #line 311 _677 = 1.00000000e+00; #line 311 F__ShapeRoundness(_676, _677); #line 311 sampleOffset_675 = _676; #line 313 float2 _681 = bokehRadiusScaled * iRings.xx; #line 313 float2 _683 = sampleOffset_675.xy * _681; #line 313 float2 _685 = IN.uv.zw + _683; #line 313 float4 _690 = float4(_685.x, _685.y, 0.00000000e+00, 0.00000000e+00); #line 313 float4 _691 = V__sCommonTex0.t.SampleLevel(V__sCommonTex0.s, _690.xy, _690.w); #line 313 float4 sampleBokeh = _691; #line 314 float _695 = sampleBokeh.w * 2.00000000e+00; #line 314 float _697 = _695 - 1.00000000e+00; #line 314 float _698 = abs(_697); #line 314 float _699 = CoC_567 * iRings; #line 314 float _700 = _698 - _699; #line 314 float _702 = 1.00000000e+06 * _700; #line 314 float _704 = _702 + 1.00000000e+00; #line 314 float _705 = saturate(_704); #line 314 float sampleWeight_706 = _705; #line 316 float3 _709 = sampleBokeh.xyz * sampleWeight_706.xxx; #line 316 sampleBokeh.xyz = _709; #line 317 float _710 = weightSum + sampleWeight_706; #line 317 weightSum = _710; #line 318 float4 _711 = BokehSum + sampleBokeh; #line 318 BokehSum = _711; #line 319 float4 _712 = max(BokehMax, sampleBokeh); #line 319 BokehMax = _712; } float _667 = iSamplesPerRing; #line 308 float _669 = _667 + 1.00000000e+00; #line 308 iSamplesPerRing = _669; #line 308 _666 = iSamplesPerRing < iRings; } } float _656 = iRings; #line 305 float _658 = _656 + 1.00000000e+00; #line 305 iRings = _658; #line 305 bool _652 = iRings <= nRings; #line 305 bool _654 = iRings < 5.00000000e+01; #line 305 _655 = _652 && _654; } #line 323 offset0.xy = offset0.zw; #line 324 float2 _715 = mul(offset0.zw, offsmat); #line 324 offset0.zw = _715; } int _642 = iVertices; #line 302 int _644 = _642 + 1; #line 302 iVertices = _644; #line 302 bool _638 = iVertices < 6; #line 302 bool _640 = iVertices < 10; #line 302 _641 = _638 && _640; } #line 327 float4 ret = float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 329 float4 _719 = BokehSum / weightSum.xxxx; #line 329 BokehSum = _719; #line 331 float3 _720; #line 331 _720 = BokehSum.xyz; #line 331 F__unpack_hdr(_720); #line 331 BokehSum.xyz = _720; #line 332 float3 _723; #line 332 _723 = BokehMax.xyz; #line 332 F__unpack_hdr(_723); #line 332 BokehMax.xyz = _723; #line 334 if (false) { #line 336 float _731 = fADOF_BokehIntensity * 1.00000001e-01; #line 336 float _732 = CoC_567 * nRings; #line 336 float _734 = _732 * 2.00000000e+00; #line 336 float _735 = saturate(_734); #line 336 float _736 = _731 * _735; #line 336 float4 _738 = lerp(BokehSum, BokehMax, _736.xxxx); #line 336 ret = _738; } else { #line 338 if (false) { #line 340 float _745 = dot(float3(3.00000012e-01, 5.89999974e-01, 1.09999999e-01), BokehMax.xyz); #line 340 float maxlum = _745; #line 341 float _749 = dot(float3(3.00000012e-01, 5.89999974e-01, 1.09999999e-01), BokehSum.xyz); #line 341 float avglum = _749; #line 343 float _752 = fADOF_BokehIntensity * 1.00000001e-01; #line 343 float _753 = CoC_567 * nRings; #line 343 float _755 = _753 * 2.00000000e+00; #line 343 float _756 = saturate(_755); #line 343 float _757 = _752 * _756; #line 343 float _758 = lerp(avglum, maxlum, _757); #line 343 float4 _760 = BokehSum * _758.xxxx; #line 343 float4 _762 = _760 / avglum.xxxx; #line 343 ret = _762; } else { #line 345 if (true) { #line 347 float _769 = dot(float3(3.00000012e-01, 5.89999974e-01, 1.09999999e-01), BokehMax.xyz); #line 347 float maxlum_770 = _769; #line 348 float _773 = dot(float3(3.00000012e-01, 5.89999974e-01, 1.09999999e-01), BokehSum.xyz); #line 348 float avglum_774 = _773; #line 350 float _775 = maxlum_770 - avglum_774; #line 350 float _777 = max(0.00000000e+00, _775); #line 350 float bokehweight = _777; #line 351 float _779 = bokehweight * fADOF_BokehIntensity; #line 351 float _781 = _779 * 1.00000001e-01; #line 351 float _783 = _781 * 2.00000000e+00; #line 351 bokehweight = _783; #line 352 float _784 = bokehweight * bokehweight; #line 352 bokehweight = _784; #line 354 float _785 = bokehweight * CoC_567; #line 354 float _786 = _785 * nRings; #line 354 float _787 = saturate(_786); #line 354 float4 _789 = BokehMax * _787.xxxx; #line 354 float4 _790 = BokehSum + _789; #line 354 ret = _790; } else { #line 356 if (false) { #line 358 float _797 = dot(float3(3.00000012e-01, 5.89999974e-01, 1.09999999e-01), BokehMax.xyz); #line 358 float maxlum_798 = _797; #line 359 float _801 = dot(float3(3.00000012e-01, 5.89999974e-01, 1.09999999e-01), BokehSum.xyz); #line 359 float avglum_802 = _801; #line 361 float _803 = maxlum_798 - avglum_802; #line 361 float bokehweight_804 = _803; #line 362 float _805 = bokehweight_804 * CoC_567; #line 362 float _806 = _805 * nRings; #line 362 float _807 = _806 * fADOF_BokehIntensity; #line 362 float _809 = _807 * 1.00000001e-01; #line 362 float _810 = saturate(_809); #line 362 float4 _812 = lerp(BokehSum, BokehMax, _810.xxxx); #line 362 ret = _812; } } } } #line 365 float3 _813; #line 365 _813 = ret.xyz; #line 365 F__pack_hdr(_813); #line 365 ret.xyz = _813; return ret; } #line 370 void F__PS_DoF_Combine( #line 370 in S__ADOF_VSOUT IN, #line 370 out float4 color : SV_TARGET0) { #line 372 float2 _822 = IN.uv.xy * float2(1.00000000e+00, 1.00000000e+00); #line 372 float4 _823 = V__sCommonTex1.t.Sample(V__sCommonTex1.s, _822); #line 372 float4 blurredColor = _823; #line 373 float4 _826 = V__NV__ColorInput.t.Sample(V__NV__ColorInput.s, IN.uv.xy); #line 373 float4 originalColor = _826; #line 375 float2 _828; #line 375 bool _829; #line 375 _828 = IN.uv.xy; #line 375 _829 = false; #line 375 float _832 = F__CircleOfConfusion(_828, _829); #line 375 float _833 = abs(_832); #line 375 float CoC_834 = _833; #line 376 float _835; #line 376 _835 = CoC_834; #line 376 float2 _836 = F__CoC2BlurRadius(_835); #line 376 float _839 = _836.x * ((float)((int)_1.x)); #line 376 float bokehRadiusPixels = _839; #line 379 float _842 = bokehRadiusPixels - 2.50000000e-01; #line 379 float _844 = _842 / 1.75000000e+00; #line 379 float _845 = saturate(_844); #line 379 float blendWeight = _845; #line 380 float _848 = pow(blendWeight, 5.00000000e-01); #line 380 blendWeight = _848; #line 382 float3 _852 = lerp(originalColor.xyz, blurredColor.xyz, blendWeight.xxx); #line 382 color.xyz = _852; #line 383 float _854 = CoC_834 * 4.00000000e+00; #line 383 float _855 = saturate(_854); #line 383 float _857 = _855 * 5.00000000e-01; #line 383 float _859 = _857 + 5.00000000e-01; #line 383 color[3] = _859; return; } #line 386 void F__PS_DoF_Gauss1( #line 386 in S__ADOF_VSOUT IN, #line 386 out float4 color : SV_TARGET0) { #line 388 float4 _865 = V__sCommonTex0.t.Sample(V__sCommonTex0.s, IN.uv.xy); #line 388 float4 centerTap = _865; #line 389 float _869 = centerTap.w * 2.00000000e+00; #line 389 float _871 = _869 - 1.00000000e+00; #line 389 float _872 = abs(_871); #line 389 float CoC_873 = _872; #line 391 float _875 = ceil(3.00000000e+00); #line 391 float _877 = _875 + 0.00000000e+00; #line 391 float _878 = CoC_873 * _877; #line 391 float _879 = floor(_878); #line 391 float nSteps = _879; #line 392 float _881 = nSteps * nSteps; #line 392 float _883 = _881 + 1.00000005e-03; #line 392 float _884 = rcp(_883); #line 392 float _886 = -2.00000000e+00 * _884; #line 392 float expCoeff = _886; #line 393 float _890 = 1.00000000e+00 / _1.x; #line 393 float _893 = 1.00000000e+00 / _1.y; #line 393 float2 _894 = float2(_890, _893); #line 393 float2 _897 = float2(1.00000000e+00, 0.00000000e+00) * _894.xy; #line 393 float2 blurAxisScaled = _897; #line 395 float4 gaussianSum = float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 396 float gaussianSumWeight = 1.00000005e-03; #line 398 float _903 = -nSteps; #line 398 float iStep = _903; #line 398 bool _910 = iStep <= nSteps; #line 398 while (_910) { { #line 400 float _914 = iStep * iStep; #line 400 float _915 = _914 * expCoeff; #line 400 float _916 = exp(_915); #line 400 float currentWeight = _916; #line 401 float _919 = 2.00000000e+00 * iStep; #line 401 float _921 = _919 - 5.00000000e-01; #line 401 float currentOffset = _921; #line 403 float2 _925 = blurAxisScaled.xy * currentOffset.xx; #line 403 float2 _927 = IN.uv.xy + _925; #line 403 float4 _932 = float4(_927.x, _927.y, 0.00000000e+00, 0.00000000e+00); #line 403 float4 _933 = V__sCommonTex0.t.SampleLevel(V__sCommonTex0.s, _932.xy, _932.w); #line 403 float4 currentTap = _933; #line 404 float _937 = currentTap.w * 2.00000000e+00; #line 404 float _939 = _937 - 1.00000000e+00; #line 404 float _940 = abs(_939); #line 404 float _942 = CoC_873 * 2.50000000e-01; #line 404 float _943 = _940 - _942; #line 404 float _944 = saturate(_943); #line 404 float _945 = currentWeight * _944; #line 404 currentWeight = _945; #line 406 float4 _947 = currentTap * currentWeight.xxxx; #line 406 float4 _948 = gaussianSum + _947; #line 406 gaussianSum = _948; #line 407 float _949 = gaussianSumWeight + currentWeight; #line 407 gaussianSumWeight = _949; } float _911 = iStep; #line 398 float _913 = _911 + 1.00000000e+00; #line 398 iStep = _913; #line 398 _910 = iStep <= nSteps; } #line 410 float4 _951 = gaussianSum / gaussianSumWeight.xxxx; #line 410 gaussianSum = _951; #line 412 float _952 = saturate(gaussianSumWeight); #line 412 float3 _956 = lerp(centerTap.xyz, gaussianSum.xyz, _952.xxx); #line 412 color.xyz = _956; #line 413 color[3] = centerTap.w; return; } #line 416 void F__PS_DoF_Gauss2( #line 416 in S__ADOF_VSOUT IN, #line 416 out float4 color : SV_TARGET0) { #line 418 float4 _963 = V__sCommonTex1.t.Sample(V__sCommonTex1.s, IN.uv.xy); #line 418 float4 centerTap_964 = _963; #line 419 float _967 = centerTap_964.w * 2.00000000e+00; #line 419 float _969 = _967 - 1.00000000e+00; #line 419 float _970 = abs(_969); #line 419 float CoC_971 = _970; #line 421 float _973 = ceil(3.00000000e+00); #line 421 float _975 = _973 + 0.00000000e+00; #line 421 float _976 = CoC_971 * _975; #line 421 float _977 = floor(_976); #line 421 float _979 = min(5.00000000e+01, _977); #line 421 float nSteps_980 = _979; #line 422 float _981 = nSteps_980 * nSteps_980; #line 422 float _983 = _981 + 1.00000005e-03; #line 422 float _984 = rcp(_983); #line 422 float _986 = -2.00000000e+00 * _984; #line 422 float expCoeff_987 = _986; #line 423 float _990 = 1.00000000e+00 / _1.x; #line 423 float _993 = 1.00000000e+00 / _1.y; #line 423 float2 _994 = float2(_990, _993); #line 423 float2 _997 = float2(0.00000000e+00, 1.00000000e+00) * _994.xy; #line 423 float2 blurAxisScaled_998 = _997; #line 425 float4 gaussianSum_1000 = float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 426 float gaussianSumWeight_1002 = 1.00000005e-03; #line 428 float _1003 = -nSteps_980; #line 428 float iStep_1004 = _1003; #line 428 bool _1010 = iStep_1004 <= nSteps_980; #line 428 while (_1010) { { #line 430 float _1014 = iStep_1004 * iStep_1004; #line 430 float _1015 = _1014 * expCoeff_987; #line 430 float _1016 = exp(_1015); #line 430 float currentWeight_1017 = _1016; #line 431 float _1019 = 2.00000000e+00 * iStep_1004; #line 431 float _1021 = _1019 - 5.00000000e-01; #line 431 float currentOffset_1022 = _1021; #line 433 float2 _1025 = blurAxisScaled_998.xy * currentOffset_1022.xx; #line 433 float2 _1027 = IN.uv.xy + _1025; #line 433 float4 _1032 = float4(_1027.x, _1027.y, 0.00000000e+00, 0.00000000e+00); #line 433 float4 _1033 = V__sCommonTex1.t.SampleLevel(V__sCommonTex1.s, _1032.xy, _1032.w); #line 433 float4 currentTap_1034 = _1033; #line 434 float _1037 = currentTap_1034.w * 2.00000000e+00; #line 434 float _1039 = _1037 - 1.00000000e+00; #line 434 float _1040 = abs(_1039); #line 434 float _1042 = CoC_971 * 2.50000000e-01; #line 434 float _1043 = _1040 - _1042; #line 434 float _1044 = saturate(_1043); #line 434 float _1045 = currentWeight_1017 * _1044; #line 434 currentWeight_1017 = _1045; #line 436 float4 _1047 = currentTap_1034 * currentWeight_1017.xxxx; #line 436 float4 _1048 = gaussianSum_1000 + _1047; #line 436 gaussianSum_1000 = _1048; #line 437 float _1049 = gaussianSumWeight_1002 + currentWeight_1017; #line 437 gaussianSumWeight_1002 = _1049; } float _1011 = iStep_1004; #line 428 float _1013 = _1011 + 1.00000000e+00; #line 428 iStep_1004 = _1013; #line 428 _1010 = iStep_1004 <= nSteps_980; } #line 440 float4 _1051 = gaussianSum_1000 / gaussianSumWeight_1002.xxxx; #line 440 gaussianSum_1000 = _1051; #line 442 float _1052 = saturate(gaussianSumWeight_1002); #line 442 float3 _1056 = lerp(centerTap_964.xyz, gaussianSum_1000.xyz, _1052.xxx); #line 442 color.xyz = _1056; #line 443 color[3] = centerTap_964.w; return; }