register(t0); Texture2D __srgbV__NV__ColorInputTex : register(t1); #line 29 Texture2D __V__NV__DepthInputTex : register(t2); Texture2D __srgbV__NV__DepthInputTex : register(t3); SamplerState __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 71 float F__NV__GetLuma( #line 71 in float3 color) { #line 74 float _16 = dot(float3(2.98999995e-01, 5.87000012e-01, 1.14000000e-01), color); return _16; } #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 _24 = vid == 2; #line 87 float _27 = _24 ? 2.00000000e+00 : 0.00000000e+00; #line 87 o.uv[0] = _27; #line 88 bool _29 = vid == 1; #line 88 float _32 = _29 ? 2.00000000e+00 : 0.00000000e+00; #line 88 o.uv[1] = _32; #line 89 float2 _35 = o.uv * float2(2.00000000e+00, -2.00000000e+00); #line 89 float2 _37 = _35 + float2(-1.00000000e+00, 1.00000000e+00); #line 89 float4 _42 = float4(_37.x, _37.y, 0.00000000e+00, 1.00000000e+00); #line 89 o.pos = _42; 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 _48; #line 95 _48 = vid; #line 95 S__VSOut _49 = F__VSMain(_48); #line 95 S__VSOut o_50 = _49; #line 96 position = o_50.pos; #line 97 texcoord = o_50.uv; return; } #line 54 "NvNewSharpen.fx" Texture2D __V__BlurTex0 : register(t4); Texture2D __srgbV__BlurTex0 : register(t5); #line 55 static const __sampler2D V__sBlurTex0 = { __V__BlurTex0, __s0 }; #line 56 Texture2D __V__BlurTex1 : register(t6); Texture2D __srgbV__BlurTex1 : register(t7); #line 57 static const __sampler2D V__sBlurTex1 = { __V__BlurTex1, __s0 }; #line 58 Texture2D __V__BlurTex2 : register(t8); Texture2D __srgbV__BlurTex2 : register(t9); #line 59 static const __sampler2D V__sBlurTex2 = { __V__BlurTex2, __s0 }; #line 60 Texture2D __V__BlurTex3 : register(t10); Texture2D __srgbV__BlurTex3 : register(t11); #line 61 static const __sampler2D V__sBlurTex3 = { __V__BlurTex3, __s0 }; #line 62 Texture2D __V__BlurTex4 : register(t12); Texture2D __srgbV__BlurTex4 : register(t13); #line 63 static const __sampler2D V__sBlurTex4 = { __V__BlurTex4, __s0 }; #line 67 float4 F__fetch_color_and_depth( #line 67 in float2 uv) { #line 69 float4 _67 = V__NV__ColorInput.t.Sample(V__NV__ColorInput.s, uv); #line 69 float3 color_69 = _67.xyz; #line 70 float2 _70; #line 70 _70 = uv; #line 70 float _71 = F__NV__GetLinearizedDepth(_70); #line 70 float depth = _71; #line 71 float4 _76 = float4(color_69.x, color_69.y, color_69.z, depth); return _76; } #line 74 float3 F__blur( #line 74 in S__VSOut i, #line 74 in __sampler2D tex, #line 74 in int iter) { #line 76 float _84 = 1.00000000e+00 / _1.x; #line 76 float _87 = 1.00000000e+00 / _1.y; #line 76 float2 _88 = float2(_84, _87); #line 76 uint _91 = 1 << ((uint)iter); #line 76 float2 _93 = _88 * ((float2)_91.xx); #line 76 float2 o_94 = _93; const float _95[3] = { 3.58832002e-01, 2.44000003e-01, 7.65839964e-02 }; #line 78 float w[3] = _95; #line 79 float3 g = float3(0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 80 int x = -2; #line 80 bool _107 = x < 3; #line 80 while (_107) { { #line 81 int y = -2; #line 81 bool _119 = y < 3; #line 81 while (_119) { { #line 83 float2 _125 = float2(((float)x), ((float)y)); #line 83 float2 _126 = o_94 * _125; #line 83 float2 _128 = i.uv + _126; #line 83 float4 _133 = float4(_128.x, _128.y, 0.00000000e+00, 0.00000000e+00); #line 83 float4 _134 = tex.t.SampleLevel(tex.s, _133.xy, _133.w); #line 83 int _135 = abs(x); #line 83 float3 _138 = _134.xyz * w[_135].xxx; #line 83 int _139 = abs(y); #line 83 float3 _141 = _138 * w[_139].xxx; #line 83 float3 _142 = g + _141; #line 83 g = _142; } int _120 = y; #line 81 int _122 = _120 + 1; #line 81 y = _122; #line 81 _119 = y < 3; } } int _108 = x; #line 80 int _110 = _108 + 1; #line 80 x = _110; #line 80 _107 = x < 3; } return g; } #line 88 float4 F__tex2Dbicub( #line 88 in __sampler2D tex, #line 88 in float2 iuv, #line 88 in float2 texsize) { #line 90 float4 uv_149 = float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 91 float2 _150 = iuv * texsize; #line 91 uv_149.xy = _150; #line 93 float2 _153 = uv_149.xy - float2(5.00000000e-01, 5.00000000e-01); #line 93 float2 _154 = floor(_153); #line 93 float2 _156 = _154 + float2(5.00000000e-01, 5.00000000e-01); #line 93 float2 center = _156; #line 94 float2 _159 = uv_149.xy - center; #line 94 float2 d = _159; #line 95 float2 _161 = d * d; #line 95 float2 d2 = _161; #line 96 float2 _163 = d2 * d; #line 96 float2 d3 = _163; #line 98 float2 _165 = -d; #line 98 float2 _167 = _165 + float2(3.00000000e+00, 3.00000000e+00); #line 98 float2 _168 = d * _167; #line 98 float2 _170 = _168 - float2(3.00000000e+00, 3.00000000e+00); #line 98 float2 _171 = d * _170; #line 98 float2 _173 = _171 + float2(1.00000000e+00, 1.00000000e+00); #line 98 float2 w0 = _173; #line 99 float2 _176 = float2(3.00000000e+00, 3.00000000e+00) * d; #line 99 float2 _178 = _176 - float2(6.00000000e+00, 6.00000000e+00); #line 99 float2 _179 = d2 * _178; #line 99 float2 _181 = _179 + float2(4.00000000e+00, 4.00000000e+00); #line 99 float2 w1 = _181; #line 100 float2 _184 = float2(-3.00000000e+00, -3.00000000e+00) * d; #line 100 float2 _186 = _184 + float2(3.00000000e+00, 3.00000000e+00); #line 100 float2 _187 = d * _186; #line 100 float2 _189 = _187 + float2(3.00000000e+00, 3.00000000e+00); #line 100 float2 _190 = d * _189; #line 100 float2 _192 = _190 + float2(1.00000000e+00, 1.00000000e+00); #line 100 float2 w2 = _192; #line 101 float2 w3 = d3; #line 103 float2 _195 = w0 + w1; #line 103 w0 = _195; #line 104 float2 _196 = w2 + w3; #line 104 w2 = _196; #line 106 float2 _198 = center - float2(1.00000000e+00, 1.00000000e+00); #line 106 float2 _199 = w1 / w0; #line 106 float2 _200 = _198 + _199; #line 106 uv_149.xy = _200; #line 107 float2 _202 = center + float2(1.00000000e+00, 1.00000000e+00); #line 107 float2 _203 = w3 / w2; #line 107 float2 _204 = _202 + _203; #line 107 uv_149.zw = _204; #line 108 float4 _206 = uv_149 / texsize.xyxy; #line 108 uv_149 = _206; #line 110 float4 _211 = float4(uv_149.xy.x, uv_149.xy.y, 0.00000000e+00, 0.00000000e+00); #line 110 float4 _212 = tex.t.SampleLevel(tex.s, _211.xy, _211.w); #line 110 float4 _214 = _212 * w0.x.xxxx; #line 110 float4 _219 = float4(uv_149.zy.x, uv_149.zy.y, 0.00000000e+00, 0.00000000e+00); #line 110 float4 _220 = tex.t.SampleLevel(tex.s, _219.xy, _219.w); #line 110 float4 _222 = _220 * w2.x.xxxx; #line 110 float4 _223 = _214 + _222; #line 110 float4 _225 = w0.y.xxxx * _223; #line 111 float4 _230 = float4(uv_149.xw.x, uv_149.xw.y, 0.00000000e+00, 0.00000000e+00); #line 111 float4 _231 = tex.t.SampleLevel(tex.s, _230.xy, _230.w); #line 111 float4 _233 = _231 * w0.x.xxxx; #line 111 float4 _238 = float4(uv_149.zw.x, uv_149.zw.y, 0.00000000e+00, 0.00000000e+00); #line 111 float4 _239 = tex.t.SampleLevel(tex.s, _238.xy, _238.w); #line 111 float4 _241 = _239 * w2.x.xxxx; #line 111 float4 _242 = _233 + _241; #line 111 float4 _244 = w2.y.xxxx * _242; #line 110 float4 _245 = _225 + _244; #line 110 float4 _247 = _245 * float4(2.77777780e-02, 2.77777780e-02, 2.77777780e-02, 2.77777780e-02); return _247; } #line 116 void F__PSBlur0( #line 116 in S__VSOut i, #line 116 out float3 o : SV_TARGET0) { #line 118 S__VSOut _252; #line 118 int _253; #line 118 _252 = i; #line 118 _253 = 0; #line 118 float3 _255 = F__blur(_252, V__NV__ColorInput, _253); #line 118 o = _255; return; } #line 120 void F__PSBlur1( #line 120 in S__VSOut i, #line 120 out float3 o : SV_TARGET0) { #line 122 S__VSOut _260; #line 122 int _261; #line 122 _260 = i; #line 122 _261 = 1; #line 122 float3 _263 = F__blur(_260, V__sBlurTex0, _261); #line 122 o = _263; return; } #line 124 void F__PSBlur2( #line 124 in S__VSOut i, #line 124 out float3 o : SV_TARGET0) { #line 126 S__VSOut _268; #line 126 int _269; #line 126 _268 = i; #line 126 _269 = 2; #line 126 float3 _271 = F__blur(_268, V__sBlurTex1, _269); #line 126 o = _271; return; } #line 128 void F__PSBlur3( #line 128 in S__VSOut i, #line 128 out float3 o : SV_TARGET0) { #line 130 S__VSOut _276; #line 130 int _277; #line 130 _276 = i; #line 130 _277 = 3; #line 130 float3 _279 = F__blur(_276, V__sBlurTex2, _277); #line 130 o = _279; return; } #line 132 void F__PSBlur4( #line 132 in S__VSOut i, #line 132 out float3 o : SV_TARGET0) { #line 134 S__VSOut _284; #line 134 int _285; #line 134 _284 = i; #line 134 _285 = 4; #line 134 float3 _287 = F__blur(_284, V__sBlurTex3, _285); #line 134 o = _287; return; } #line 137 void F__PSMain( #line 137 in S__VSOut i, #line 137 out float3 color : SV_TARGET) { const float4 _292[9] = { float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00), float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00), float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00), float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00), float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00), float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00), float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00), float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00), float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00) }; #line 143 float4 taps[9] = _292; #line 144 float3 offsets = float3(1.00000000e+00, 0.00000000e+00, -1.00000000e+00); const float _296[9] = { 1.00000000e+00, 2.00000000e+00, 1.00000000e+00, 2.00000000e+00, 4.00000000e+00, 2.00000000e+00, 1.00000000e+00, 2.00000000e+00, 1.00000000e+00 }; #line 146 float gaussian[9] = _296; #line 150 float _300 = 1.00000000e+00 / _1.x; #line 150 float _303 = 1.00000000e+00 / _1.y; #line 150 float2 _304 = float2(_300, _303); #line 150 float2 _306 = offsets.zz * _304; #line 150 float2 _308 = i.uv + _306; #line 150 float2 _309; #line 150 _309 = _308; #line 150 float4 _310 = F__fetch_color_and_depth(_309); #line 150 taps[0] = _310; #line 151 float _313 = 1.00000000e+00 / _1.x; #line 151 float _316 = 1.00000000e+00 / _1.y; #line 151 float2 _317 = float2(_313, _316); #line 151 float2 _319 = offsets.yz * _317; #line 151 float2 _321 = i.uv + _319; #line 151 float2 _322; #line 151 _322 = _321; #line 151 float4 _323 = F__fetch_color_and_depth(_322); #line 151 taps[1] = _323; #line 152 float _326 = 1.00000000e+00 / _1.x; #line 152 float _329 = 1.00000000e+00 / _1.y; #line 152 float2 _330 = float2(_326, _329); #line 152 float2 _332 = offsets.xz * _330; #line 152 float2 _334 = i.uv + _332; #line 152 float2 _335; #line 152 _335 = _334; #line 152 float4 _336 = F__fetch_color_and_depth(_335); #line 152 taps[2] = _336; #line 153 float _339 = 1.00000000e+00 / _1.x; #line 153 float _342 = 1.00000000e+00 / _1.y; #line 153 float2 _343 = float2(_339, _342); #line 153 float2 _345 = offsets.zy * _343; #line 153 float2 _347 = i.uv + _345; #line 153 float2 _348; #line 153 _348 = _347; #line 153 float4 _349 = F__fetch_color_and_depth(_348); #line 153 taps[3] = _349; #line 154 float _352 = 1.00000000e+00 / _1.x; #line 154 float _355 = 1.00000000e+00 / _1.y; #line 154 float2 _356 = float2(_352, _355); #line 154 float2 _358 = offsets.yy * _356; #line 154 float2 _360 = i.uv + _358; #line 154 float2 _361; #line 154 _361 = _360; #line 154 float4 _362 = F__fetch_color_and_depth(_361); #line 154 taps[4] = _362; #line 155 float _365 = 1.00000000e+00 / _1.x; #line 155 float _368 = 1.00000000e+00 / _1.y; #line 155 float2 _369 = float2(_365, _368); #line 155 float2 _371 = offsets.xy * _369; #line 155 float2 _373 = i.uv + _371; #line 155 float2 _374; #line 155 _374 = _373; #line 155 float4 _375 = F__fetch_color_and_depth(_374); #line 155 taps[5] = _375; #line 156 float _378 = 1.00000000e+00 / _1.x; #line 156 float _381 = 1.00000000e+00 / _1.y; #line 156 float2 _382 = float2(_378, _381); #line 156 float2 _384 = offsets.zx * _382; #line 156 float2 _386 = i.uv + _384; #line 156 float2 _387; #line 156 _387 = _386; #line 156 float4 _388 = F__fetch_color_and_depth(_387); #line 156 taps[6] = _388; #line 157 float _391 = 1.00000000e+00 / _1.x; #line 157 float _394 = 1.00000000e+00 / _1.y; #line 157 float2 _395 = float2(_391, _394); #line 157 float2 _397 = offsets.yx * _395; #line 157 float2 _399 = i.uv + _397; #line 157 float2 _400; #line 157 _400 = _399; #line 157 float4 _401 = F__fetch_color_and_depth(_400); #line 157 taps[7] = _401; #line 158 float _404 = 1.00000000e+00 / _1.x; #line 158 float _407 = 1.00000000e+00 / _1.y; #line 158 float2 _408 = float2(_404, _407); #line 158 float2 _410 = offsets.xx * _408; #line 158 float2 _412 = i.uv + _410; #line 158 float2 _413; #line 158 _413 = _412; #line 158 float4 _414 = F__fetch_color_and_depth(_413); #line 158 taps[8] = _414; #line 161 float3 mean = float3(0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 162 int j = 0; #line 162 bool _425 = j < 9; #line 162 while (_425) { { #line 164 float3 _430 = mean + taps[j].xyz; #line 164 mean = _430; } int _426 = j; #line 162 int _428 = _426 + 1; #line 162 j = _428; #line 162 _425 = j < 9; } #line 166 float3 _432 = mean / float3(9.00000000e+00, 9.00000000e+00, 9.00000000e+00); #line 166 mean = _432; #line 167 float3 rms = float3(0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 168 int j_436 = 0; #line 168 bool _443 = j_436 < 9; #line 168 while (_443) { { #line 170 float3 _448 = taps[j_436].xyz - mean; #line 170 float3 _450 = taps[j_436].xyz - mean; #line 170 float3 _451 = _448 * _450; #line 170 float3 _452 = rms + _451; #line 170 rms = _452; } int _444 = j_436; #line 168 int _446 = _444 + 1; #line 168 j_436 = _446; #line 168 _443 = j_436 < 9; } #line 174 if (depth_available) { #line 179 int j_457 = 0; #line 179 bool _464 = j_457 < 9; #line 179 [unroll] while (_464) { { #line 181 bool _472 = j_457 == 4; #line 181 if (_472) { int _465 = j_457; #line 179 int _467 = _465 + 1; #line 179 j_457 = _467; #line 179 _464 = j_457 < 9; continue; } #line 183 float _475 = taps[j_457].w - taps[4].w; #line 183 float _476 = abs(_475); #line 183 float _478 = 4.00000000e+03 * _476; #line 183 float _479 = saturate(_478); #line 183 float depth_mask = _479; #line 185 float _482 = 8.00000012e-01 * depth_mask; #line 185 float3 _486 = lerp(taps[j_457].xyz, taps[4].xyz, _482.xxx); #line 185 taps[j_457].xyz = _486; } int _465 = j_457; #line 179 int _467 = _465 + 1; #line 179 j_457 = _467; #line 179 _464 = j_457 < 9; } } #line 189 float3 blurred = float3(0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 209 float4 smartblurred = float4(0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00); #line 210 int j_492 = 0; #line 210 bool _499 = j_492 < 9; #line 210 while (_499) { { #line 212 float3 _505 = taps[4].xyz - taps[j_492].xyz; #line 212 float3 _506 = abs(_505); #line 212 float3 _507; #line 212 _507 = _506; #line 212 float _508 = F__NV__GetLuma(_507); #line 212 float delta = _508; #line 214 float _510 = -delta; #line 214 float _511 = _510 * delta; #line 214 float _513 = _511 * 6.40000000e+01; #line 214 float _514 = exp2(_513); #line 214 delta = _514; #line 216 float4 _519 = float4(taps[j_492].xyz.x, taps[j_492].xyz.y, taps[j_492].xyz.z, 1.00000000e+00); #line 216 float4 _521 = _519 * gaussian[j_492].xxxx; #line 216 float4 _523 = _521 * delta.xxxx; #line 216 float4 _524 = smartblurred + _523; #line 216 smartblurred = _524; } int _500 = j_492; #line 210 int _502 = _500 + 1; #line 210 j_492 = _502; #line 210 _499 = j_492 < 9; } #line 218 float3 _527 = smartblurred.xyz / smartblurred.w.xxx; #line 218 smartblurred.xyz = _527; #line 219 blurred = smartblurred.xyz; #line 221 float3 _530 = taps[4].xyz - blurred; #line 221 float3 sharp = _530; #line 222 float3 _533 = rms + float3(8.00000038e-03, 8.00000038e-03, 8.00000038e-03); #line 222 float3 _534 = rsqrt(_533); #line 222 float3 _536 = _534 * float3(1.80000007e-01, 1.80000007e-01, 1.80000007e-01); #line 222 float3 _537 = sharp * _536; #line 222 sharp = _537; #line 224 if (depth_available) { #line 229 float _543 = taps[4].w / 6.99999988e-01; #line 229 float _544 = saturate(_543); #line 229 float _547 = lerp(1.00000000e+00, 5.00000000e-01, _544); #line 229 float3 _549 = sharp * _547.xxx; #line 229 sharp = _549; } #line 232 float _551 = g_sldSharpStrength * 4.00000000e+00; #line 232 float3 _553 = sharp * _551.xxx; #line 232 sharp = _553; #line 233 float3 _555 = taps[4].xyz + sharp; #line 233 color = _555; #line 235 float3 orig = color; #line 236 float4 _558 = V__sBlurTex0.t.Sample(V__sBlurTex0.s, i.uv); #line 236 float3 a = _558.xyz; #line 237 float4 _562 = V__sBlurTex1.t.Sample(V__sBlurTex1.s, i.uv); #line 237 float3 b = _562.xyz; #line 238 int2 _565; V__sBlurTex2.t.GetDimensions(_565.x, _565.y); #line 238 float2 _566; #line 238 float2 _567; #line 238 _566 = i.uv; #line 238 _567 = ((float2)_565); #line 238 float4 _570 = F__tex2Dbicub(V__sBlurTex2, _566, _567); #line 238 float3 c = _570.xyz; #line 239 int2 _573; V__sBlurTex3.t.GetDimensions(_573.x, _573.y); #line 239 float2 _574; #line 239 float2 _575; #line 239 _574 = i.uv; #line 239 _575 = ((float2)_573); #line 239 float4 _578 = F__tex2Dbicub(V__sBlurTex3, _574, _575); #line 239 float3 d_580 = _578.xyz; #line 240 int2 _581; V__sBlurTex4.t.GetDimensions(_581.x, _581.y); #line 240 float2 _582; #line 240 float2 _583; #line 240 _582 = i.uv; #line 240 _583 = ((float2)_581); #line 240 float4 _586 = F__tex2Dbicub(V__sBlurTex4, _582, _583); #line 240 float3 e = _586.xyz; #line 242 float3 _589 = a + b; #line 242 float3 _590 = _589 + c; #line 242 float3 _592 = _590 / float3(3.00000000e+00, 3.00000000e+00, 3.00000000e+00); #line 242 float3 blur = _592; #line 244 float3 _594 = orig - e; #line 244 float3 _595 = abs(_594); #line 244 float3 _596; #line 244 _596 = _595; #line 244 float _597 = F__NV__GetLuma(_596); #line 244 float mask = _597; #line 245 float _600 = mask * 4.00000000e+00; #line 245 float _602 = 1.00000000e+00 - _600; #line 245 float _603 = saturate(_602); #line 245 mask = _603; #line 247 float _604 = -g_sldTextureIntensity; #line 247 float _605 = _604 * mask; #line 247 float3 _607 = lerp(orig, blur, _605.xxx); #line 247 color = _607; return; }